2013-05-05 106 views
0

我有两个项目,一个创建静态库和另一个使用它。 第一个,创建一个名为liboutputdevice.a的文件。 当我建立它时,一切都会好起来。静态库链接问题使用eclipse

然后,我有使用该库的上面, 和包括#include "outputdevice.h" 和卡列斯的功能我的第二个项目:

initdevice("sdfs"); 

这是宣布outputdevice.h和静态库上方ipmlemented。 测试仪项目链接到第一个项目:Cross g ++链接程序,库和库搜索路径。

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

回答

0

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

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

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