IOS7(仅)stdlibc ++链接问题

Mar*_*ekM 28 xcode libstdc++ ios7

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

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

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

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

知道自己做错了什么吗?

小智 68

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

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

当你链接到使用它的静态库时相当烦人!!

方案:

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

这对我有用,我没有必要将-lstdc ++添加到Other Linker Flags!

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

  • 在项目中添加一个空的.mm文件!岩石 (5认同)
  • 这应该是公认的答案.此外,在添加空cpp或mm文件后,您实际上不必再将C++标准库设置为libstdc ++. (2认同)

Mar*_*ekM 27

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

此致,马雷克


Dou*_*les 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的指针!