【问题标题】:C++ link error with Xcode 5 when changing iOS Deployment Target to iOS 7.0将 iOS 部署目标更改为 iOS 7.0 时,Xcode 5 出现 C++ 链接错误
【发布时间】:2013-09-25 15:38:28
【问题描述】:

我已经升级到 Xcode 5,并且能够使用现有设置很好地构建我的项目。

将 Base SDK 更新到 7.0 不会导致任何问题。

但是,当我将 iOS 部署目标更改为 iOS 7.0 时,我开始收到标准 C++ 符号的链接错误。例如:

Undefined symbols for architecture armv7 std::string::empty() const", referenced from...

我尝试过的:

  • 显式链接标准 C++ 库
  • 在 Xcode 5 中更改“C++ 标准库”设置。尝试了 libstdc++、libc++ 和“编译器默认值”

如果部署目标设置为 iOS 7.0,它只是找不到 C++ 符号,如果它设置为 iOS 6.1,它会找到。

【问题讨论】:

  • 你清理和重建了吗?
  • 是的,清理并重建,以及清理构建文件夹......
  • 试试Build Settings -> Compile Sources As -> Objective-C++
  • 谢谢。 C++ 引用来自一个库——我在构建库时尝试了该设置(“根据文件类型”),但没有影响。

标签: c++ ios xcode


【解决方案1】:

事实证明,如果 XCode 在项目中找不到任何 C++ 文件,则假定不需要 libstd++。因此,您必须手动将 C++ 文件添加到项目中(一个空的 .mm 文件就足够了)。

所有的功劳都归于这个answer这个Stackoverflow thread

【讨论】:

  • 向项目添加一个虚拟 .mm 文件有效。这解决了问题,但如果有人知道更好的解决方法,那就太好了。
  • 完全同意,这仍然是一种解决方法。我想最好的解决方案是让 XCode 工作。如果您找到更好的解决方案,也请在这里分享。
  • 我们也遇到了这个问题,发现单独一个.mm文件是不够的。我们也必须告诉 Xcode(版本 5)与标准 C++ 库链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2016-09-16
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多