我的项目有这个文件夹结构:
Project/
--Classes/
----Class1.h
----Class1.cpp
--main.cpp
“Class1.h”包含方法定义,“Class1.cpp”是“Class1.h”的源代码。
“Class1.h”的源码是这样的:
class Class1 {
public:
void do_something();
};
“Class1.cpp”的源码是这样的:
#include "Class1.h"
void Class1::do_something() {
//
}
“main.cpp”的源码是这样的:
#include "Classes/Class1.h"
int main(int argc,char** args) {
Class1* var = new Class1();
var->do_something();
return 0;
}
但是,在编译“main.cpp”时,编译器并不知道Class1中方法的实现在哪里,所以会出现 undefined reference 的链接错误。
我是否必须在命令行中添加任何路径以便编译器知道它必须编译哪些源文件?如何告诉编译器它也必须编译“Class1.cpp”?
最佳答案
您需要将项目中的所有文件提供给编译器,而不仅仅是“main.cpp”。 Here您可以阅读有关使用 Gcc 编译多个文件的基础知识。
另一种选择是将您的类编译为动态或静态库,但如果您对库不是很熟悉,则应该从简单地将它们编译在一起开始。
关于c++ - 对 C++ #include 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11968127/