在MacOSX上使用boost库时出现链接错误

时间:2009-07-25 15:36:32

标签: c++ macos boost

我创建了一个XCode项目,我已将“/ opt / local / include / boost”添加到页眉搜索路径,将“/ opt / local / lib”添加到库搜索路径

但我仍然有这个错误:

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*

你能告诉我我错过了什么吗?

3 个答案:

答案 0 :(得分:5)

添加库路径是不够的。这只是确保无论何时告诉它链接到库,它都会在指定的路径中搜索该库以及所有默认路径。

因此,您还需要实际告诉编译器使用标志

链接到库
-lboost_system-mt

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

答案 1 :(得分:3)

更新:对于XCode 4,您需要为链接器添加.dylib文件。在XCode中,使用“导航器”窗格中的“项目导航器”选项。然后单击您的项目,然后单击您的目标,然后选择“Build Phases”选项卡,并按“Link Binary With Libraries”组中的“+”按钮。你需要添加你想要使用的libboost_ .dylib。

Adding Link Binary in XCode4 for Boost

答案 2 :(得分:2)

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

添加boost dylib文件

希望这会有所帮助。