最近,我开始在Windows上使用Boost进行项目。它需要是跨平台的,所以我也在Mac上安装它。不幸;每当我将它添加到Xcode项目时,它都会给我一大堆链接器错误和转换警告。
其中一个链接器错误的示例:
架构x86_64的未定义符号:
" boost :: system :: system_category()",引自: main.o中的___cxx_global_var_init2 main.o中的boost :: asio :: error :: get_system_category() main.o中的boost :: system :: error_code :: error_code()" boost :: system :: generic_category()",引自: 在main.o中___cxx_global_var_init main.o中的___cxx_global_var_init1 ld:找不到架构x86_64 clang的符号:错误:链接器命令失败并带有退出代码 1(使用-v查看调用)
其中一个转化警告示例:
包含来自的文件 /usr/local/Cellar/boost/1.57.0/include/boost/date_time/posix_time/posix_time_types.hpp:16: /usr/local/Cellar/boost/1.57.0/include/boost/date_time/posix_time/posix_time_duration.hpp:24:21:警告:隐式转换失去整数精度:' long'至 ' hour_type' (又名' int')[ - Wortorton-64-to-32] TIME_DURATION(H,0,0)
我尝试了几种安装方法和配置方法,但它仍然无法正常工作。
这些是我的步骤:
我尝试过的编译选项:
我尝试过的配置选项:
如果有人能指出我正确的方向,我会非常感激。我认为它与Xcode有关,因为所有编译版本都会给我带来同样的错误。
答案 0 :(得分:3)
我找到了答案。将标题和库路径添加到项目搜索路径后,您需要转到“构建阶段”。在那里,您需要将所需的各个库添加到“链接库到二进制”子部分。您可以在lib文件夹中找到必要的文件(在boost文件夹中)。
您可以选择扩展名为.a或扩展名为.mt.dylib的库文件。如果选择.a扩展名文件,则库将添加到程序的编译版本中。如果选择.mt.dylib文件,则库不会添加到已编译的程序中。在这种情况下,您假设动态库文件已经存在于运行该程序的计算机上。