使用Xcode

时间:2015-10-11 00:16:32

标签: c++ xcode boost

我正在运行OS X 10.11(El Captain)并且正在尝试使用C ++和boost编译程序。具体来说,我正在尝试使用boost::program_options类。以下代码将无法编译:

#include <iostream>
#include <boost/program_options.hpp>
int main(int argc, const char *argv[]) {
    boost::program_options::options_description desc("Options");
    return 0;
}

并返回错误:

Undefined symbols for architecture x86_64:
  "boost::program_options::options_description::m_default_line_length", referenced from:
      _main in test.o
      processArgs(int, char const**) in test.o
  "boost::program_options::options_description::options_description(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int, unsigned int)", referenced from:
      _main in test.o
      processArgs(int, char const**) in test.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我使用brew,Xcode 7.0.1安装了1.58.0。我在构建选项下使用默认编译器(Apple LLVM 7.0),并在页眉搜索路径中指定了/usr/local/Cellar/boost/1.58.0/include,在库搜索路径中指定了/usr/local/Cellar/boost/1.58.0/lib。另外,我检查了目录以确保存在正确的文件。

任何建议都将不胜感激!谢谢,如果您有任何其他问题,请与我联系。

1 个答案:

答案 0 :(得分:2)

看起来它正在编译,但它没有链接。我相信您需要在Link Binary With Libraries下将libboost_program_options.dylib添加到您的应用程序中。有关详细信息,请参阅this page(步骤4)。

我添加库的方法是选择我的目标,然后选择Link Binary With Libraries,然后选择Add Other。对我来说最困难的部分是导航到/ usr / local文件夹(我是Xcode开发的新手)。我这样做的方法是去Finder,然后选择Go - &gt;转到文件夹...然后转到文件夹/ usr / local,然后将其从窗口底部拖到收藏夹。然后,当您在Xcode中单击Add Other时,它会显示,您可以轻松导航到/ usr / local / lib目录并找到boost库。