IOS7(仅)stdlibc ++链接问题

我需要帮助。 我有一个框架,使用stdc ++像std:string。 现在,当我为IOS7创build新应用程序时,由于stdc ++ lib的问题,链接此框架时出现问题:

架构armv7“std :: basic_string,std :: allocator> :: _ Rep :: _ S_empty_rep_storage”的未定义符号,引用自…

我发现奇怪的是,当我在这个应用程序中将Deplyment目标更改为ios6时,所有工作都正常。 用ios7我看到错误。

我已经在其他链接器标志中设置了标志:-lstdc ++

任何想法是什么阿米做错了?

只是对这个答案的更新:

这一步非常重要!

确保在Apple LLVM 5.0编译器构build设置中将C ++标准库设置为libstdc ++(GNU c ++标准库)

背景:

我有一个iOS应用程序突然停止build立与标准库链接错误的iOS 7。 我已经在模拟器和iPad mini上成功testing了应用程序,并将其归档,但是当我添加了iPhone 5S进行testing时,我开始发现链接错误(可能是因为新的架构在混合?)。

search谷歌上的链接错误,我发现build议明确地将libstdc ++。dylib添加到链接的库。 这没有奏效。

我尝试将libstdc ++。6.dylib添加到链接的库中。 这消除了链接错误,但应用程序很早就崩溃在标准C ++库代码中。

如上所述,删除了库的显式添加和更改“生成设置”中的编译器设置,纠正了链接错误和运行时问题。

感谢rimestad的指针!

说实话,我不喜欢上面的答案,因为它使用静态库而不是dynamic的!

我自己有这个问题,并发现问题是,Xcode无法find任何C ++文件在你的项目,因此假定不需要libstc ++!

当你连接到一个使用它的静态库时非常烦人!

解答:

  • 添加一个空的.mm文件给你项目!
  • 确保在生成设置中将C ++标准库设置为libstdc ++(GNU c ++标准库)

这工作对我来说,我不必将-lstdc ++添加到其他链接器标志

希望能帮助别人解决同样的问题。

谢谢你的帮助。 我find了解决办法。 我在其他链接器标志中使用了-lstdc ++标志,但现在还不够用。 我必须添加“libstdc ++。6.0.9.dylib在BuildPhases->链接二进制与库。在净信息中的某处xcode有ios7 stdc ++库select的问题,它应该手动select。

问候,马雷克

我有一个类似的问题,但@ MarekM的答案只解决了我的问题的一部分,所以我试图添加libstdc ++。dylib和libstdc ++。6.dylib,这使得所有的编译错误消失。