这是一个理论上的怀疑。 假设您有一个只有两个文件的小库:lib.h. lib.cpp中的头文件,实现代码。 按照惯例,在C ++中我们在lib.cpp中包含lib.h,也就是说,lib.h“不知道”存在“lib.cpp”。 因此,要在程序中使用我们的库,支持:myprogram.cpp和myprogram.h,我必须只包含“lib.h” 那么,我的程序将如何加载头文件的实现?如果头文件“不知道”有关实现文件的存在吗?
答案 0 :(得分:2)
您必须告诉链接器lib
文件,例如lib.lib
或lib.so
.cpp
个文件将被编译为对象文件,然后编译为.lib
或.so
个文件。
在包含myprogram.cpp
的项目中,您必须告知链接器.lib/.so
来自lib.cpp
的文件。
答案 1 :(得分:2)
通常,您将实现编译到库中并将程序链接到该库。因此,除非实现代码实际上在标头中,或者在标头包含的文件中,因此也是分布式的,否则您的断言“实现代码只包含头文件”是错误的。