我需要帮助。 我有一个使用stdc ++的框架,比如std:string。 现在,当我为IOS7创建新的应用程序时,由于stdc ++ lib的问题,链接此框架存在问题:
架构armv7的未定义符号 “std :: basic_string,std :: allocator> :: _ Rep :: _ S_empty_rep_storage”,引自......
我发现一些奇怪的事情,当我在这个应用程序中将Deplyment目标更改为ios6时,一切正常。 使用ios7,我看到错误。
我已经在其他链接器标志中设置了标志:-lstdc ++
知道自己做错了什么吗?
答案 0 :(得分:68)
老实说,我不喜欢上面的答案,因为它使用静态库而不是动态!
我自己遇到了问题,发现问题是xcode无法在你的项目中找到任何C ++文件,因此假定不需要libstc ++!
当您链接到使用它的静态库时非常烦人!!
解决方案:
这对我有用,我没有将-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,这使得所有的编译错误都消失了。