Xcode10 libstdc++ 适配及stdc++ headers 文件缺失

    先简单说下背景吧。苹果发布了正式版的Xcode10 以及最新正式版iOS 12系统,听说Xcode10 有黑暗模式?好像很酷炫的样子,那必须升级一下......接下来大家应该都猜到了,捂脸em......

    我们是做移动端地图SDK开发的,底层是用一套C++编写的,并且依赖了libstdc++,当升级到Xcode10 后编译直接报错,无论是SDK工程还是引用了SDK的项目工程,全都报错,很明显这次的锅C++背了。哈哈哈哈!

    最好的解决办法是迁移到libc++,嗯,这也是苹果想看到的,毕竟人家说我都给你们标记5年了,你们还在使用,你们是有多懒?对不起,苹果爸爸,我们错了...

Xcode10 libstdc++ 适配及stdc++ headers 文件缺失_第1张图片

 什么,你还是不想迁移?不好意思,你的APP不要上架了。


Xcode10 libstdc++ 适配及stdc++ headers 文件缺失_第2张图片


    当然了,有些朋友用的别人的三方库报错了怎么办?第三方一时半会也迁移不过去啊。以下是临时解决方案:

    问题一:

    libstdc++ library not found

    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    解决方案:

    拷贝Xcode9 的libstdc++ 到Xcode10。参考味精大佬的这篇博客。

    如果按照这种方式模拟器还是不能运行的话,可能还是stdc++相关库是替身的原因,可以参考这篇文章。

    问题二:

    C++头文件缺失,如string/vector/cmath  file not  found。

    解决方案:

    将Xcode 9

    真机:

    /Applications/Xcode9.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/c++

    模拟器:

    /Applications/Xcode9.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/c++


    该目录文件拷贝到Xcode10对应include路径下,Xcode10缺少该文件夹。

你可能感兴趣的:(Xcode10 libstdc++ 适配及stdc++ headers 文件缺失)