Я пытаюсь скомпилировать код C ++ с Geany.
Команда компиляции: g ++ -Wall -c «% f»
Команда построения: g ++ -Wall -o «% e» «% 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» (в каталоге:
/ home / me / projects / Test) /tmp/ccxYmWkE.o: в работеmain':
Персоны :: Person (интермедиат)»
main.cpp:(.text+0x15): undefined reference to
collect2: error: ld вернул 1 состояние завершения Компиляция не удалась.
До Geany я использовал только Code :: Blocks, и все работало нормально. Как я могу это исправить?
Очевидно, вы не добавили Person.cpp
к команде компиляции. тогда он не может пройти уровень сцепления.
добавлять -o Person Person.cpp
к варианту сборки после g++ -Wall -c "%e" "%f"
,
Ведь команда compile должна выглядеть примерно так:
g++ -Wall -o "main" "main.cpp" -o Person Person.cpp
Других решений пока нет …