IOS7(仅)stdlibc ++链接问题

时间:2013-09-23 12:49:27

标签: xcode ios7 libstdc++

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

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

我发现一些奇怪的事情,当我在这个应用程序中将Deplyment目标更改为ios6时,一切正常。 使用ios7,我看到错误。

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

知道自己做错了什么吗?

4 个答案:

答案 0 :(得分:68)

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

我自己遇到了问题,发现问题是xcode无法在你的项目中找到任何C ++文件,因此假定不需要libstc ++!

当您链接到使用它的静态库时非常烦人!!

解决方案:

  • 为您的项目添加一个空的.mm文件!
  • 确保 C ++标准库 在构建设置中设置为 libstdc ++(GNU c ++标准库)

这对我有用,我没有将-lstdc ++添加到其他链接器标志

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

答案 1 :(得分:27)

感谢您的帮助。 我找到了解决方案。 我在其他链接器标志中使用-lstdc ++标志,但现在还不够。 我不得不在BuildPhases-> Link Binary With Libraries中添加“libstdc ++。6.0.9.dylib”。 网络信息中有一处xcode存在ios7 stdc ++ lib选择问题,应该手动选择。

此致 马立克

答案 2 :(得分:27)

关于这个答案的更新:

这一步非常重要!

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

背景:

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

搜索Google上的链接错误,我找到了将libstdc ++。dylib显式添加到链接库的建议。这没用。

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

如上所述,删除库的显式添加和更改Build Settings中的编译器设置可以纠正链接错误和运行时问题。

感谢rimestad指针!

答案 3 :(得分:3)

我遇到了类似的问题,但是@ MarekM的回答只解决了我的部分问题,所以我尝试添加了libstdc ++。dylib和libstdc ++。6.dylib,这使得所有的编译错误都消失了。