2012-10-24 4 views
1

Можно создать дубликат:
What is an undefined reference/unresolved external symbol error and how do I fix it?Класс неопределенная ссылка

Это должно быть простая задача, но я все еще возникают проблемы. Я посмотрел на подобные вопросы, но они кажутся немного более сложными, чем то, что я ищу.

Я использую код :: Блоки 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_H 


class Burrito 
{ 
    public: 
     Burrito(); 

}; 

#endif // BURRITO_H 

---------- ----- Burrito.cpp -----------------

#include "Burrito.h" 
#include<iostream> 

using namespace std; 
Burrito::Burrito() 
{ 

} 
+0

Скорее всего [это] (http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix/12574400 # 12574400) - вы не компилируете или не связываете 'Burrito.cpp'. –

+0

, пожалуйста, подробно, как вы компилируете свои файлы для создания исполняемого файла ... – sergio

+0

Я просто подумал, что смогу его создать и запустить. Я не понимал, что мне нужно делать какие-либо специальные компиляции. Я займусь этим. – user1771489

ответ

0

Если я включил #include "Burrito.cpp" в Class2.cpp, тогда он работает, но он не включил его.

Это редко (я бы сказал, никогда) решение. Не следует #include, что должно быть исходным файлом в другом исходном файле. Решение состоит в том, чтобы скомпилировать все файлы, которые вам нужно скомпилировать, и позволить компоновщику справляться с проблемами связи.

Вы не скомпилировали Burrito.cpp, так что, конечно, у вас проблемы с связью. Решение легко: скомпилируйте Burrito.cpp и добавьте Burrito.o в набор файлов, которые вы добавляете к компоновщику. В качестве альтернативы вы можете предоставить как Class2.cpp, так и Burrito.cpp компилятору, создавая в качестве вывода исполняемый файл, а не объектные.

+0

Я читал о чем-то подобном, но как бы скомпилировать Burrito.cpp? Полагаю, я займусь этим позже, когда у меня будет время. – user1771489

Смежные вопросы