我有两个项目,一个用于创建静态库,另一个用于创建静态库。 第一个,创建一个名为liboutputdevice.a的文件。 当我构建它时,一切都顺利。
然后我的第二个项目使用上面的库,
包括#include "outputdevice.h"
和calles功能:
initdevice("sdfs");
在outputdevice.h上声明并在上面的静态库中进行了ipmlemented。 测试项目通过以下方式链接到第一个项目:Cross g ++ Linker,库和库搜索路径。
当我构建该项目时(测试人员,第二个),第一个是错误,Undefined reference to 'pthread create'
突然...
(虽然我在第一个项目的编译过程中包含了-lpthread)。
有人可以说出问题所在吗?
答案 0 :(得分:0)
您必须告诉编译器/ IDE包含文件的位置。请注意,库文件(通常使用.lib扩展名)和包含文件(.h或.hpp)不一样。虽然必须将库添加到链接器(正如您所做的那样),但也必须可以从项目基目录访问包含文件。 如果包含的主路径与项目的主路径不同,则必须告诉编译器,是否应该查找其他包含。 通常这是通过编译器调用的-I选项完成的,例如
g++ main.cpp -I path/to/other/includes/dir
您也可以直接在IDE的项目首选项中进行设置。