0

我有两个项目,一个创建静态库,另一个正在使用它。第一个,创建一个名为 liboutputdevice.a 的文件。当我构建它时,一切正常。

然后我的第二个项目使用了上面的库,并包含#include "outputdevice.h" 并调用了一个函数:

initdevice("sdfs");

它在 outputdevice.h 上声明并在上面的静态库中实现。测试器项目通过转到:Cross g++ Linker、库和库搜索路径链接到第一个项目。

当我正在构建该项目(测试仪,第二个)时,第一个出现错误,Undefined reference to 'pthread create' 突然...(尽管我在第一个项目的编译过程中包含了 -lpthread)。有人可以告诉它是什么问题吗?

4

1 回答 1

0

您必须告诉您的编译器/IDE 包含文件在哪里。请注意,库文件(通常带有 .lib 扩展名)和包含文件(.h 或 .hpp)并不相同。虽然必须将库添加到链接器(正如您所做的那样),但也必须可以从项目基目录访问包含文件。如果包含的主路径与项目的主路径不同,您必须告诉编译器,它是否应该寻找额外的包含。通常这是由编译器调用的 -I 选项完成的,例如

g++ main.cpp -I path/to/other/includes/dir 

您也可以直接在 IDE 的项目首选项中进行设置。

于 2013-05-05T08:06:45.220 回答