为什么我不能将静态库包含到cpp文件中?

时间:2011-09-07 09:38:41

标签: c++ shared-libraries static-libraries

有没有办法在cpp或cc文件中#include“library.a”或者它是.so或者.o?

我想这样做,因为我在另一个文件中使用此文件。

5 个答案:

答案 0 :(得分:4)

#include适用于C ++代码。

.a.so.o文件不是C ++代码。

您更有可能希望#include一个C ++头文件(通常以.h.hpp结尾),链接一个目标文件。< / p>

答案 1 :(得分:2)

您可以使用#pragma comment(lib, "libname")在Visual C ++编译器中执行此操作 - 并且相似性有点不确定。但是,您必须为自己喜欢的编译器发现任何替代方案。

答案 2 :(得分:1)

#include用于告诉编译器有关您将在代码中调用的库中的函数,也就是说它包含C ++代码。通常,它采用头文件的形式,其中包含函数声明。

.a和.so和.o文件是编译代码,可以使用链接器链接到已编译的代码中。

编辑:有关于编译和链接here的介绍

答案 3 :(得分:1)

#include语句基本上只包含当前文件中的其他源代码。话虽这么说,静态库不是源代码,不能以这种方式包含。所有编译完成后,静态(和共享)库将链接到项目中。

您需要做的是将包含原型的文件包含在您将要使用的函数中。通过这种方式,编译器知道它在那里,链接器将对其余部分进行排序。

有关如何创建和链接静态/共享库的更多信息,请查看this页。

答案 4 :(得分:0)

这根本没有意义。

您可以在编译时通过链接来包含库的代码。

通常,您可以包含库的头文件。