Geany-未定义引用 我尝试用GeNe./P>编译C++代码。

Geany-未定义引用 我尝试用GeNe./P>编译C++代码。,c++,compiler-construction,reference,undefined,geany,C++,Compiler Construction,Reference,Undefined,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.cpp #include "Person.hpp" Person::Person(int a) {

编译命令: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.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'中:
main.cpp:(.text+0x15):对
Person::Person(int)”的未定义引用 collect2:错误:ld返回1个退出状态编译失败


在Geany之前,我只使用Code::Blocks,一切都很好。如何修复它?

很明显,您没有将
Person.cpp
添加到编译命令中。那么它就不能通过联动层

-o Person.cpp
添加到
g++-Wall-c“%e”“%f”
之后的构建选项中。 毕竟,compile命令应该如下所示:

g++ -Wall -o "main" "main.cpp" -o Person Person.cpp
您可以(也可能应该)配置Geany为GNU使用
Makefile
;您的build命令显然是错误的,您需要链接多个对象文件。。。
g++ -Wall -o "main" "main.cpp" -o Person Person.cpp