Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法在Xcode中使用Boost,请继续获取;未定义的建筑符号“;错误_C++_Ios_Xcode_Cocoa_Boost - Fatal编程技术网

C++ 无法在Xcode中使用Boost,请继续获取;未定义的建筑符号“;错误

C++ 无法在Xcode中使用Boost,请继续获取;未定义的建筑符号“;错误,c++,ios,xcode,cocoa,boost,C++,Ios,Xcode,Cocoa,Boost,我试图在我的Xcode项目中加入Boost,但似乎无论我做什么,项目都不想编译 我每次都会遇到此错误: 架构x86_64的未定义符号: "boost::log::v2s_mt_posix::record_view::public_data::destroy(boost::log::v2s_mt_posix::record_view::public_data const*)", referenced from: boost::log::v2s_mt_posix::record::res

我试图在我的Xcode项目中加入Boost,但似乎无论我做什么,项目都不想编译

我每次都会遇到此错误:

架构x86_64的未定义符号:

"boost::log::v2s_mt_posix::record_view::public_data::destroy(boost::log::v2s_mt_posix::record_view::public_data const*)", referenced from:
      boost::log::v2s_mt_posix::record::reset() in Logger.o
  "boost::log::v2s_mt_posix::attribute_set::insert(boost::log::v2s_mt_posix::attribute_name, boost::log::v2s_mt_posix::attribute const&)", referenced from:
      boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_mt_posix::sources::severity_logger<boost::log::v2s_mt_posix::trivial::severity_level>, boost::log::v2s_mt_posix::sources::single_thread_model>::add_attribute_unlocked(boost::log::v2s_mt_posix::attribute_name const&, boost::log::v2s_mt_posix::attribute const&) in Logger.o
“boost::log::v2s\u mt\u posix::record\u view::public\u data::destroy(boost::log::v2s\u mt\u posix::record\u view::public\u data const*)”,引用自:
Logger.o中的boost::log::v2s\u mt\u posix::record::reset()
“boost::log::v2s\u mt\u posix::attribute\u set::insert(boost::log::v2s\u mt\u posix::attribute\u name,boost::log::v2s\u mt\u posix::attribute const&)”,引用自:
boost::log::v2s_mt_posix::sources::basic_logger::add_attribute_unlocked(boost::log::v2s_mt_posix::attribute_name const&,boost::log::v2s_mt_posix::attribute const&)在logger.o中
(以及其他一些总共108个错误。)

为了解决这个问题,我做了很多努力,并且阅读了几乎所有与此相关的关于StackOverflow的问题

我在“linkbinary With Items”中链接它,我得到了
libboost_序列化.a
libboost_系统.a
(只有列表中的东西)

在使用
/b2
命令手动安装Boost之后,我将这两个文件都拖到了侧边栏中。因此,这些文件与my
.xcodeproj
位于同一目录中

库搜索路径下
,我有
$(PROJECT\u DIR)
,所以它应该能够找到它们


我是用错误的标志还是什么编译的

这为我解决了问题:

不要将
libboost_log-mt.*
添加到“构建阶段”选项卡下的“使用库链接二进制文件”部分,而是在“构建设置”选项卡下的“其他链接器标志”中添加存档文件的路径(即
.a
;动态库不工作):


我无法解释为什么会这样;但我注意到,在过去,这种技术在其他库“不链接”的情况下也适用于我。

您确定您为x86_64而不仅仅是i386编译了boost库吗?您是如何构建boost的?我相信我运行了以下命令:我应该尝试其他方法吗?您应该尝试并确定是否构建了x86_64库,然后您需要确保您的项目与libc++而不是libstdc++相链接,就像您对boost所做的那样。我应该如何做后者?在Xcode中单击您的项目,然后,在项目属性的过滤器框中,输入libc。它将向您显示一个名为“C++标准库”的设置,然后您可以对其进行更改。非常接近,我最终通过使用boost 1.72上的libboost_log-mt和libboost_log_setup-mt的.dylib版本(而不是.a)构建了我的项目