xcode IOS7(仅限)stdlibc++链接问题

rqmkfv5c  于 2022-12-27  发布在  iOS
关注(0)|答案(4)|浏览(156)

我需要帮助。我有一个使用stdc的框架,如std:string。现在,当我为IOS7创建新的应用程序时,由于stdc lib的问题,链接此框架时出现问题:
架构armv7“标准::基本字符串,标准::分配器〉::_代表::_S_空代表存储”的符号未定义,引用自...
我发现了一些奇怪的事情,当我在这个应用程序中将部署目标更改为ios6时,一切都正常。使用ios7时,我看到错误。
我已经在其他链接器标志中设置了标志:- 最低标准数据中心++
你知道我做错了什么吗?

fdbelqdn

fdbelqdn1#

老实说,我不喜欢上面的答案,因为它使用静态库而不是动态库!
我自己也遇到过这个问题,发现问题是xcode无法在您的项目中找到任何C++文件,因此假设不需要libstc ++!
当你链接到一个使用它的静态库时,这是非常烦人的!!
溶液:

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

这对我很有效,我不需要 * 将-lstdc ++添加到其他链接器标志 *!

von4xj4u

von4xj4u2#

仅更新此答案:
这一步很重要!
确保在Apple LLVM 5.0编译器构建设置中将C++标准库设置为libstdc (GNU c标准库)
背景:
我有一个iOS应用程序突然停止了为iOS 7构建,出现了标准库链接错误。我一直在模拟器和iPad mini上成功测试该应用程序,并将其存档,但当我添加iPhone 5S进行测试时,我开始出现链接错误(可能是因为混合使用了新的架构?)
在Google上搜索链接错误,我发现了显式添加libstdc ++. dylib到链接库的建议。
我尝试将libstdc .6.dylib添加到链接库中;这消除了链接错误,但应用程序很早就在标准C库代码中崩溃了。
如上所述,删除库的显式添加并更改生成设置中的编译器设置,纠正了链接错误和运行时问题。
感谢rimestad的指点!

ghhkc1vu

ghhkc1vu3#

谢谢你的帮助。我已经找到了解决方案。我在其他链接器标志中使用了-lstdc标志,但现在还不够。我必须在BuildPhases-〉Link Binary With Libraries中添加“libstdc.6.0.9.dylib”。在net info中的某个地方,xcode在ios7 stdc++ lib选择方面存在问题,应该手动选择。
问候你马雷克

3zwjbxry

3zwjbxry4#

我也遇到过类似的问题,但是@MarekM的答案只能解决我的部分问题,所以我尝试添加libstdc++.dylib和libstdc++.6.dylib,这样就消除了所有的编译错误。

相关问题