无法在 Xcode 中使用 Boost,不断收到"Undefined symbols for architecture"错误

Unable to use Boost in Xcode, keep getting "Undefined symbols for architecture" errors

本文关键字:Undefined symbols 错误 architecture for Xcode Boost      更新时间:2023-10-16

我正在尝试将Boost包括在我的Xcode Project中,无论我做什么项目,该项目都不想编译。

我每次都会遇到此错误:

架构的未定义符号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

(与其他一堆完全108个错误一起。)

我已经尝试了很多解决此问题的方法,并在与此相关的stackoverflow上阅读了几乎所有问题。

i am 将其链接在"与项目的链接二进制"中,我有libboost_serialization.alibboost_system.a(该列表中的仅有的东西)。

使用./b2命令手动安装Boost后,我将两个文件拖到了边栏中。因此,这些文件与我的.xcodeproj处于相同的目录。

Library Search Paths下,我有 $(PROJECT_DIR),所以应该能够找到它们。

我是用错误的旗帜或其他东西编译它吗?

这为我解决了问题:

而不是在"构建阶段"选项卡下的"链接二进制"部分中添加 libboost_log-mt.*,而是在 Archive File (即.a; Dynamic Library不起作用)添加路径)在"构建设置"选项卡下的"其他链接标志"中:

构建设置下的其他链接标志

我没有解释为什么这有效;但是我注意到过去,这种技术也对我有用,而其他库也"不链接"。

相关文章: