Возможный дубликат:
Что такое неопределенная ссылка / неразрешенная внешняя ошибка символа и как ее исправить?
Это должно быть простой проблемой, но у меня все еще есть проблемы. Я смотрел на подобные вопросы, но они кажутся немного более сложными, чем то, что я ищу.
Я использую Code :: Blocks 10.05.
Я получаю неопределенную ссылку на мои файлы классов. Я знаю, что это ошибка компоновщика, но я не уверен, как ее исправить. Я боюсь, что не очень разбираюсь в ссылках на файлы.
s\Desktop\the cool container\Test 1\Class2.o:Class2.cpp|| undefined reference to `Burrito::Burrito()'|
||=== Build finished: 1 errors, 0 warnings ===|
Все мои файлы находятся в одной папке. Мой объект ничего не делает, я просто пробую это, и я не должен получать ошибки при создании объекта из другого класса.
Да, это из учебника TheNewBoston … Он смог получить эту работу, поэтому я должен быть в состоянии заставить ее работать.
Если я включу #include "Burrito.cpp"
в Class2.cpp тогда это работает, но он не включил это.
————Class2.cpp ——————
#include <iostream>
#include "Burrito.h"using namespace std;
int main(){
Burrito Bo;
return 0;
}
—————Burrito.h —————-
#ifndef BURRITO_H
#define BURRITO_Hclass Burrito
{
public:
Burrito();
};
#endif // BURRITO_H
—————Burrito.cpp ——————
#include "Burrito.h"#include<iostream>
using namespace std;
Burrito::Burrito()
{
}
Если я включу
#include "Burrito.cpp"
в Class2.cpp тогда это работает, но он не включил это.
Это редко (я бы сказал никогда) решение. не #include
что должно быть исходным файлом в каком-то другом исходном файле. Решение состоит в том, чтобы скомпилировать все необходимые вам файлы и позволить компоновщику справиться с проблемами компоновки.
Вы не скомпилировали Burrito.cpp, поэтому, конечно, у вас проблемы со связью. Решение простое: скомпилируйте Burrito.cpp и добавьте Burrito.o в набор файлов, которые вы предоставляете компоновщику. В качестве альтернативы, вы можете предоставить и Class2.cpp, и Burrito.cpp компилятору, создавая исполняемый файл, а не объектные файлы в качестве вывода.
Других решений пока нет …