2009-07-25 70 views
2

我创建了一个XCode项目,并且向库头搜索路径添加了“/ opt/local/include/boost”,并向库搜索路径添加了“/ opt/local/lib”在MacOSX上使用增强库时出现链接错误

但我仍然有这样的错误:

 
boost::system::get_generic_category()", referenced from: 
    __static_initialization_and_destruction_0(int, int)in main.o 
    __static_initialization_and_destruction_0(int, int)in main.o 
    __static_initialization_and_destruction_0(int, int)in main.o 

而且在我的/ opt/local/lib目录,我觉得这是(我认为是Boost.System库):

 
-rw-r--r-- 2 root admin  80600 Jul 23 16:31 libboost_system-mt.a 
-rwxr-xr-x 2 root admin  30988 Jul 23 16:30 libboost_system-mt.dylib* 

可以请你告诉我我错过了什么?

+1

您还没有提供错误的描述。它是“未定义的符号”吗? – stepancheg 2009-07-25 15:49:34

回答

5

添加库路径是不够的。这样可以确保只要您告诉它链接到库,它就会在指定的路径中搜索该库以及所有默认路径。

所以你还需要实际告诉编译器链接到库,旗

-lboost_system-mt 

在Windows上,加速默认支持autolinking - 也就是说,如果你只是包括正确的头,它会尝试链接到实际的库(通过使用MSVC#pragma)。在其他平台上,您必须手动链接到库。

2

要链接到XCode中的库,请右键单击使用Boost的“Target”并选择获取信息。在下面的列表“链接库”中,通过单击+

添加boost dylib文件希望这有帮助。

3

更新:对于XCode 4,您需要为链接器添加.dylib文件。在XCode中,使用'Navigator'窗格中的'Project Navigator'选项。然后点击您的项目,然后点击您的目标,然后选择“Build Phases”选项卡,然后按下“Link Binary With Libraries”组中的“+”按钮。您需要添加您尝试使用的任何libboost_ .dylib。

Adding Link Binary in XCode4 for Boost