【问题标题】:Linker errors when using a c++/Objective C++ library使用 c++/Objective C++ 库时的链接器错误
【发布时间】:2013-11-07 21:46:36
【问题描述】:

我正在尝试为 iOS 构建一个静态库。我有 4 个带有 Objective-C++ 包装器的 C++ 类。它似乎构建得很好,但是当我尝试运行我的单元测试时,我得到了一堆类似于下面的链接器错误。是否需要添加一些命令才能使用我的库?

(null): "std::__1::__vector_base_common<true>::__throw_length_error() const", referenced from:

编辑:

我通过向两个目标添加 libc++.dylib 框架解决了这个问题。

【问题讨论】:

  • 你使用哪个版本的 Xcode?​​span>

标签: c++ ios objective-c++


【解决方案1】:

预感:库和单元测试目标在使用哪个 C++ 标准库上存在分歧。仔细检查两个目标中的构建设置。

  • 在 Xcode 4.6 中,该设置位于“Apple LLVM 编译器 4.2 - 语言”标题下
  • 在 Xcode 5 中,该设置位于标题“Apple LLVM 5.0 - 语言 - C++”下

在这两种情况下,设置都被命名为“C++ 标准库”(呵呵!),并且两个目标应该就使用 libstdc++ 还是 libc++ 达成一致。

【讨论】:

  • @mimc 确保两个目标的“C++ 语言方言”设置相同。如果这没有帮助,那么我就没有想法了(尽管我的直觉仍然很强烈 - 链接器错误明确指向 C++ 标准库)。
  • C++部分的所有设置都匹配。
猜你喜欢
  • 2017-11-19
  • 2012-03-09
  • 1970-01-01
  • 2020-12-21
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多