我正在尝试将 Boost 包含在我的 Xcode 项目中,但似乎无论我做什么项目都不想编译。
我每次都会收到这个错误:
体系结构 x86_64 的 undefined symbol :
"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 上几乎所有与此相关的问题。
我正在在“Link Binary With Items”中链接它,我在那里有libboost_serialization.a
和libboost_system.a
(仅该列表中的内容)。
使用 ./b2
命令手动安装 Boost 后,我将这两个文件拖到边栏中。因此,这些文件与我的 .xcodeproj
位于同一目录中。
在 Library Search Paths
下,我有 $(PROJECT_DIR)
,所以它应该能够找到它们。
我是不是用错误的标志或其他东西编译它?
最佳答案
这解决了我的问题:
与其将 libboost_log-mt.*
添加到“Build Phases”选项卡下的“Link Binary With Libraries”部分,不如添加指向归档文件的路径(即,.a
;动态库不起作用)在“Build Settings”选项卡下的“Other Linker Flags”中:
Other Linker Flags under Build Settings
我无法解释为什么这是可行的;但我注意到这种技术在过去对我也适用于其他“未链接”的库。
关于c++ - 无法在 Xcode 中使用 Boost,不断出现 "Undefined symbols for architecture"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21613208/