原因很简单:Xcode10起,苹果摒弃了对libstdc++库的支持转而支持libc++库了。为了保证老代码能跑,必须将几个库复制到对应文件夹(见后)。同时修改Build Phases中的Link Binary With Libraries小节,增加对libstdc++的3个库的引用
相应文件下载url:https://github.com/codesourse/libstdc-
这个链接包含一个脚本,运行后搞定一切。
详细知识点:从Xcode10不再支持libstdc++说起
动态库:
目录: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib 文件: ibstdc++.dylib,libstdc++.6.dylib,libstdc++.6.0.9.dylib
真机:
目录: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib 文件:libstdc++.tbd,libstdc++.6.tbd,libstdc++.6.0.9.tbd
模拟器:
目录: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib 文件: libstdc++.tbd,libstdc++.6.tbd,libstdc++.6.0.9.tbd