3

这是一个理论上的怀疑。假设你有一个只有两个文件的小库:lib.h。lib.cpp 的头文件,实现代码。按照惯例,在 C++ 中,我们将 lib.h 包含在 lib.cpp 中,也就是说,lib.h“不知道”“lib.cpp”的存在。因此,要在程序中使用我们的库,假设:myprogram.cpp 和 myprogram.h,我必须只包含“lib.h” 那么,我的程序将如何加载头文件的实现?如果头文件“不知道”实现文件的存在?

4

2 回答 2

2

例如,您必须告诉链接器有关该lib文件的信息lib.liblib.so

.cpp文件将被编译为对象文件,然后编译为.lib.so文件。在项目中,myprogram.cpp您必须通知链接器有关.lib/.so来自lib.cpp.

于 2012-06-25T20:31:19.507 回答
2

通常,您将实现编译到一个库中并将您的程序链接到该库。因此,除非实现代码实际上位于标头中,或者位于标头包含的文件中并因此也分发,否则您断言“实现代码仅包含头文件”是错误的。

于 2012-06-25T20:32:24.320 回答