IOS培训
美国上市IOS培训机构

400-111-8989

热门课程

ios开发中libstdc++适配Xcode10与iOS12

  • 发布:iOS培训
  • 来源:网络
  • 时间:2018-06-11 18:06

随着时间的推移,互联网越来越受到人们的青睐,传统产业也在不断衰退。那么伴随着互联网的兴起,程序员的岗位越发出现空缺,尤其是ios程序开发工程师。达内ios培训班火热招生中!欢迎垂询。那么今天我们给大家带来的是ios开发中libstdc++适配Xcode10与iOS12

libstdc++适配Xcode10与iOS12

当你开心地升级完新macOS,以及新XCode,准备体验了一把 Dark Mode 编程模式,开心的打开自己的老项目的时候,发现编译不通过了╮(╯_╰)╭

如果你的工程中如果依赖libstdc++,无论是你本身的功能用 C++ 跨平台编写,还是你引入了某个SDK其内部依赖这个libstdc++,都会导致整个工程编译不通过,报出Undefined symbols,C++ 的 List 找不到了

libstdc++适配Xcode10与iOS12

原因是苹果在XCode10和iOS12中移除了libstdc++这个库,由libc++这个库取而代之,苹果的解释是libstdc++已经标记为废弃有5年了,建议大家使用经过了llvm优化过并且全面支持C++11的libc++库。

临时解决办法

编译问题

拷贝缺失的libstdc++

XCode10目前是Beta版,和XCode9正式版可以共存,于是从XCode9的目录里,把缺失的.tbd文件拷贝过来,要记得拷贝2套,一套是模拟器的,一套是设备的,可以简单的用下面的命令

1

2

3cp /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/

cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/

libstdc++适配Xcode10与iOS12

拷贝过去后,你就可以在新XCode(黑暗模式真心舒服)下面看到libstdc++了,放心的添加到工程里吧

模拟器运行

libstdc++适配Xcode10与iOS12

拷贝libstdc++之后就可以编译通过了,但App在模拟器里一运行就崩溃,就会报动态链接库装载出错,看出错提示说是.dylib与这个模拟器不符合。奇怪的是同样的工程用XCode9编译运行就一点问题也没有,初步怀疑是XCode10自带的iOS12模拟器的问题,在XCode10中安装iOS11的模拟器运行环境,然后切换到iOS11模拟器运行,一切问题没有。(凑合一下在XCode里调试的时候用iOS11模拟器吧,忍忍)

真机运行

拷贝libstdc++之后,使用iOS12的真机运行,没有啥太大的问题

正确解决办法

如果你自己的业务模块使用了libstdc++,那么就把模块代码重新调整为依赖libc++,然后重新检查是否存在问题,重新编译

如果你引用的三方库使用了libstdc++,那么向三方库寻求支持,进行升级

libc++

Apple 为什么在 Mavericks 里把 C++ 标准库从 libstdc++ 改成 libc++?

 

更多ios相关类知识请关注ios培训官网ios.tedu.cn

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容

上一篇:开发自己的cordova插件
下一篇:ios工程师培训之后好就业吗

iOS开发中的5种图片缩略技术教程

IOS Swift实战开发经验总结,IOSSwift开发经验分享

IOS设计 - 一款APP从设计稿到切图过程概述

2017年IOS开发者账号申请以及邓白氏码的申请教程经验

选择城市和中心
贵州省

广西省

海南省