使用boost :: math和Xcode链接错误 - 架构的未定义符号x86_64

时间:2015-09-28 04:30:06

标签: c++ xcode c++11 boost xcode7

我在Xcode 7.0中将boost库链接到我的C ++程序时遇到了一些麻烦。我正在运行OSX 10.10.5,我下载了Boost 1.59.0。

Xcode抛出的错误是:

  

架构x86_64的未定义符号:     “boost :: math :: tools :: promote_args :: type boost :: math :: beta(int,int,int)”,引自:         _main in main.o

     

ld:找不到架构x86_64的符号   clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

在谷歌搜索了一天的大部分时间后,我看到很多人都有类似的问题,但没有一个修复工作对我有用。

我尝试的第一件事是: http://www.nullptr.me/2014/08/20/boost-with-xcode/

我将Xcode中的搜索路径更改为相应的目录,在“Other Linker Flags”下添加了“-L / usr / local / lib -lboost_math_c99 -lboost_math_tr1”。这给了我同样的错误。奇怪的是,当我从上面的博客中复制确切的代码时,一切都运行正常(因此从boost连接chrono和系统库是好的,但是一旦我尝试再次使用数学函数,它就会抛出错误)。

然后我看到了许多具有类似建议的stackoverflow响应:

Boost Xcode C++ command line Undefined symbols for architecture x86_64

Using Boost on XCode 5 - Apple LLVM 5.0

Linking troubles with boost::program_options on OSX using LLVM

这些响应似乎表明我需要使用clang和std11标志重新编译boost。我是这样做的:

  

./ bootstrap.sh toolset = clang --with-libraries = math

     

./ b2 toolset = clang cxxflags =“ - std = c ++ 11    -stdlib = libc ++“variant = release linkflags =” - stdlib = libc ++“link = static stage

然后我将新库放在预期的位置。然而,当我尝试构建Xcode时,我得到了完全相同的错误。

作为参考,抛出错误的行是:

  

double ell = boost :: math :: beta(2,2,1);

在顶部我已经包括:

  

升压/数学/ special_functions / gamma.hpp

     

升压/数学/ tr1.hpp

非常感谢任何帮助。我很难理解为什么我可以毫不费力地使用boost中的计时器和系统库,但数学会抛出错误。我是统计学家,我的目标是加速R包,但我需要beta功能,这似乎最容易通过boost访问。如果我能提供更多信息,请告诉我。

0 个答案:

没有答案