例如,我有一个名为Foo的类。我创建了
我非常想了解这个编译和链接的过程。
Foo.h
和Foo.cpp
文件,然后在main.cpp
文件中包含了Foo.h
文件。当我编译代码时,机器是如何知道将类头文件和类cpp文件关联起来的呢?是通过文件名完成的吗?我非常想了解这个编译和链接的过程。
Foo.h
和Foo.cpp
文件,然后在main.cpp
文件中包含了Foo.h
文件。当我编译代码时,机器是如何知道将类头文件和类cpp文件关联起来的呢?是通过文件名完成的吗? class Foo {
public:
Foo(); // Constructor declaration
};
Foo.cpp
#include "Foo.hpp" // <<<< Include declarations
Foo::Foo() {} // Constructor definition
main.cpp
#include "Foo.hpp" // <<<< Include declarations
int main() {
Foo foo; // <<<<< Use declarations
}
为了最终指示链接器将所有这些文件拼合在一起,您必须引用从 翻译单元 产生的工件。根据工具链的不同,可能需要使用一些编译器命令行,例如GCC,您可以使用类似于以下的编译器命令行。
$ g++ main.cpp Foo.cpp -o myProg
main.o
文件将引用在Foo.h
中声明的符号,这些符号在Foo.cpp
中定义,因此将在链接时在Foo.o
中找到。 - Useless