将 Boost 库链接到 Xcode 项目

3
我正在尝试创建一个使用Boost库的项目。我使用的是Xcode 6.2,操作系统是OS X 10.9.5(我应该更新一下)。我用homebrew安装了boostbrew install boost,它位于/usr/local/Cellar/boost/1.59.0。我将路径/usr/local/Cellar/boost/1.59.0/include添加到Xcode中的头文件搜索路径中,它似乎被识别了,因为自动补全提示有效。
boost文档中提到,有些Boost库必须在使用之前构建。我假设homebrew已经处理好了,因为我在/usr/local/Cellar/boost/1.59.0/lib中有许多.a.dylib文件。
我还是C++和Xcode构建过程的新手,但似乎我仍然需要将编译后的库链接到我的项目中。我尝试将路径/usr/local/Cellar/boost/1.59.0/lib添加到我的项目库搜索路径中,但我不确定是否正确。
这是我构建项目时遇到的错误。
Undefined symbols for architecture x86_64:
  "boost::filesystem::detail::create_directory(boost::filesystem::path const&, boost::system::error_code*)", referenced from:
      boost::filesystem::create_directory(boost::filesystem::path const&) in main.o
  "boost::filesystem::detail::status(boost::filesystem::path const&, boost::system::error_code*)", referenced from:
      boost::filesystem::exists(boost::filesystem::path const&) in main.o
  "boost::system::system_category()", referenced from:
      ___cxx_global_var_init2 in main.o
  "boost::system::generic_category()", referenced from:
      ___cxx_global_var_init in main.o
      ___cxx_global_var_init1 in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我需要配置其他什么才能使它正常工作吗?


@Eelke 太好了!谢谢,我将它们添加到项目的构建设置的“其他链接器标志”部分,然后它就起作用了!如果你把它变成一个答案,我会接受它。 - Devin Crossman
1个回答

3

添加路径是正确的,但你还需要指定所需的库。在命令行中,你可以使用 -l,在Xcode中,你可以将它们添加到其他链接器标志中。

你需要的库是boost_filesystemboost_system


你能给出确切的语法吗?我正在尝试使用boost,在“其他链接器标志”部分放置“-l boost_bind”,但在Xcode中仍然会出现“找不到boost/bind.hpp文件”的错误(包括#include <boost/bind/bind.hpp>和#include <boost/bind.hpp>都失败)。 - Mike 'Pomax' Kamermans
你缺少了boost的包含路径。无法提供详细信息,正在使用手机发布。 - Eelke
我绝对不是。我使用brew安装了boost,它被编译到了/usr/local/Cellar/boost,我已将/usr/local/Cellar/boost/1.65.1/include/添加到我的头文件路径中,将/usr/local/Cellar/boost/1.65.1/lib/添加到库搜索路径中,但是当我查看实际的编译指令(使用Xcode的报告导航器)时,没有引用到它们。所以我按照Xcode的要求精确地添加了它们,但它们被完全忽略了。 - Mike 'Pomax' Kamermans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接