libstdc++适配Xcode10与iOS12
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了libstdc++适配Xcode10与iOS12,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2097字,纯文字阅读大概需要3分钟。
内容图文
编译报错
当你开心得升级完新 macOS,以及新 XCode,准备体验了一把 Dark Mode 编程模式,开心的打开自己的老项目的时候,发现编译不通过了╮(╯_╰)╭
如果你的工程中如果依赖 libstdc++
,无论是你本身的功能用 C++ 跨平台编写,还是你引入了某个 SDK 其内部依赖这个 libstdc++
,都会导致整个工程编译不通过,报出 Undefined symbols
,C++ 的 List 找不到了
原因是苹果在 XCode10 和 iOS12 中移除了 libstdc++
这个库,由 libc++
这个库取而代之,苹果的解释是 libstdc++
已经标记为废弃有5年了,建议大家使用经过了 llvm 优化过并且全面支持C++11的 libc++
库。
临时解决办法
- 编译问题
拷贝缺失的libstdc++
在 XCode10 正式发布前,XCode10 目前是 Beta 版,和 XCode9 正式版可以共存
于是从 XCode9 的目录里,把缺失的 .tbd 文件拷贝过来,要记得拷贝2套,一套是模拟器的,一套是设备的,可以简单的用下面的命令
1
|
cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/
|
现在 XCode10 正式发布了,很多人已经没有 XCode9 来拷贝了,于是这里放出来文件提供下载
将 libstdc++.6.0.9.tbd.zip 解压,放到目录
1
|
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/
|
拷贝过去后,你就可以在新 XCode(黑暗模式真心舒服)下面看到libstdc++
了,放心的添加到工程里吧
- 模拟器运行
拷贝libstdc++
之后就可以编译通过了,但 App 在模拟器里一运行就崩溃,就会报动态链接库装载出错,看出错提示说是 .dylib 与这个模拟器不符合。这是 XCode10 自带的 iOS12 模拟器的问题,在 XCode10 中安装 iOS11 的模拟器运行环境,然后切换到 iOS11 模拟器运行,一切问题没有。如果想在 XCode12 iOS12 模拟器中运行:
a. 将 libstdc++_sim.zip 解压,放到目录
1
|
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/
|
b. 将 libstdc++.dylib_sim.zip 解压,放到目录
1
|
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/
|
- 真机运行
拷贝 libstdc++
之后,使用 iOS12 的真机运行,没有啥太大的问题
正确解决办法
- 如果你自己的业务模块使用了
libstdc++
,那么就把模块代码重新调整为依赖libc++
,然后重新检查是否存在问题,重新编译 - 如果你引用的三方库使用了
libstdc++
,那么向三方库寻求支持,进行升级
原文https://awhisper.github.io/2018/06/08/libstdc-inxcode10ios12/
原文:https://www.cnblogs.com/chenzxl/p/12540555.html
内容总结
以上是互联网集市为您收集整理的libstdc++适配Xcode10与iOS12全部内容,希望文章能够帮你解决libstdc++适配Xcode10与iOS12所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。