2013-09-29 3 views
0

Я пытаюсь скомпилировать код C++ с Geany.Geany - undefined reference

Compile команда: г ++ -Wall -c "% F"

команда Сложение: г ++ -Wall -o "% е" "% F"

main.cpp:

#include <iostream> 

#include "Person.hpp" 

int main() 
{ 
    Person p1(16); 

    std::cout << p1.getAge(); 

    return 0; 
} 

Person.hpp

class Person 
{ 
public: 

    Person(int a); 

    void setAge(int); 

    int getAge() const; 

private: 

    int age; 
}; 

inline int Person::getAge() const 
{ 
    return age; 
} 

Person.cpp

#include "Person.hpp" 

Person::Person(int a) 
{ 
    age = a; 
} 

void Person::setAge(int a) 
{ 
    age = a; 
} 

Ошибка:

g++ -Wall -o "main" "main.cpp" (in directory: /home/me/projects/Test) /tmp/ccxYmWkE.o: In function main': main.cpp:(.text+0x15): undefined reference to Person::Person(int)' collect2: error: ld returned 1 exit status Compilation failed.

Перед Geany, я использовал только Code :: Blocks и все работало нормально. Как я могу это исправить?

+0

Вы можете (и, вероятно, должны) настроить * Geany * использовать 'Makefile' для GNU [сделать] (http://www.gnu.org/программное обеспечение/сделать /); ваша команда сборки явно неверна, вам нужно связать несколько объектных файлов ... –

ответ

1

Очевидно, вы не добавили Person.cpp в команду компиляции. то он не может пройти уровень связи.

Добавить -o Person Person.cpp в вариант строительства после g++ -Wall -c "%e" "%f". Ведь команда компиляции должно быть что-то, как показано ниже:

g++ -Wall -o "main" "main.cpp" -o Person Person.cpp