1、前两天升级了Xcode 10的GM版,本来等两天就可以正式升级更新了,实在等不了了。
2、升级后发现原来的项目编译不通过,一直报错linker command failed with exit code 1 (use -v to see invocation);
3、点击报错也没有定位具体是哪里的问题,这下好了,回头用Xcode9是好好的;
4、网上查了一下,很多描述都指向了libstdc++这个库,并且据说苹果官方在5年前就有声明将要废弃,后续使用libc++库来替代之;
5、其实我们自己是不会主动使用这种库的,因为这是C++库,我们一般也不会在代码里面大量使用C++;
6、那问题基本上是找到点了,使用这些库的一般是有图形处理相关的需求,比如地图;
7、废话不说多了,如何处理才是正题,直接添加libstdc++库是不行了,因为iOS12SDK中已经不包含这个库了;
8、目前最简单的方法就是将Xcode9中的libstdc++相关的库拷贝到Xcode10中来,避免引用报错,应该就搞定了!
9、真机路径:Xcode.app ▸ Contents ▸ Developer ▸ Platforms ▸ iPhoneOS.platform ▸ Developer ▸ SDKs ▸ iPhoneOS.sdk ▸ usr ▸ lib
10、在这个lib目录下,相关的文件有libstdc++.6.0.9.tbd、libstdc++.tbd、libstdc++.6.tbd;
11、将这三个文件,从Xcode9中拷贝到Xcode10相对应的目录下;
12、模拟器:Xcode.app ▸ Contents ▸ Developer ▸ Platforms ▸ iPhoneSimulator.platform ▸ Developer ▸ SDKs ▸ iPhoneSimulator.sdk ▸ usr ▸ lib;
13、解决办法类似,也是将相对应的文件拷贝到相关路径,注意:相对应!!!模拟器拷模拟器,真机拷真机。
14、libstdc++库文件下载:libstdc++.6.0.9.tbd