c++ - 无法在 Xcode 中使用 Boost,不断出现 "Undefined symbols for architecture"错误

标签 c++ ios xcode cocoa boost

我正在尝试将 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.alibboost_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/

相关文章:

c++ - Windows map 文件系统

C++ : why is my average returning as an int and not a double?

c++ - 如何为 Windows C++ 安装当前版本的 OpenGL?

ios - Xcode 注释取消注释问题

objective-c - 如何在 iOS 中为 View 的移动设置动画?

c++ - 为什么这个线程不一致地从管道读取所有数据?

objective-c - 如何获取我刚刚发布在Twitter上的图片的网址?

ios - 为什么 xCode 会四处移动我的对象?

首次访问时 iOS 设置包为空

ios - NSClassFromString() 总是返回 nil