升级Xcode10之后运行之前项目报错解决方案

升级了Xcode10之后,因为项目没有新需求,就去写其他东西了,一直没运行过以前的项目,昨天朋友问我问题,运行了一下以前的项目,发现不能编译通过,报错,网上各种找答案之后解决了,现在把自己遇到的问题整理一下,方便其他遇到相同问题的人。
首先,运行项目之后报下面的错,找不到sdk:


unable to find sdk.jpg

原因说的很清楚了,找不到sdk,在TARGETS -> Build Settings -> Base SDK查看也显示“iphoneos11.4(SDK not found)”解决方案:把Base SDK 选择改成 “iOS”,如下图:
sdk not found solution.jpg
(注意是TARGETS下修改,我之前没注意,查看的是PROJECT里面的,发现本来就是选择的iOS,就一直没找到)
修改好之后,再运行,又报错,info.plist重复:
Multiple commands produce problem.jpg
解决方案1:

1.Build Phases ->Copy Bundle Resources
2.搜索找到info.plist,删除它
3.clean一下

解决方案2:Xcode -> File -> Project Settings/Workspace Setting -> Build System -> Legacy Build System
修改Xcode设置.png
修改Xcode设置2.png

Xcode9之后,Xcode新增了一个构建系统“New Build System”(新构建系统),在Xcode10中默认使用New Build System,这套编译会严格解析各个文件的依赖关系。旧的构建系统称为 legacy build system (传统构建系统),切换成Legacy Build System则是表示使用之前的构建系统。

重新运行项目,接着报错,library not found for -lstdc++.6.0.9:

linker command failed.jpg
查看项目里面framwork中发现libstdc++.6.0.9.tdb变红
libstdc++.6.0.9.tbd变红.jpg
苹果的解释是libstdc++已经标记为废弃有5年了,建议大家使用经过了llvm优化过并且全面支持C++11的libc++库。而这次Xcode10中已经彻底移除了libstdc++及其相关库,如果没有用到的不用修改,但是目前有的三方库中会依赖libstdc++,目前临时的解决办法是将以前的Xcode中的libstdc++、libstdc++.6、libstdc++6.0.9拷贝到Xcode10中,在网上找到了一份制作好的libstdc++库,这里给出链接(经过作者同意后转载,该作者原文章地址:https://www.jianshu.com/p/6d94278d62b3):下载地址
添加libstdc++库.jpg
按照下载链接中的说明,将库复制到相应目录中。再运行项目,就可以正常运行了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,314评论 19 139
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,466评论 2 59
  • 有一次,在坐地铁的时候,遇到一个小男孩在闹脾气,大概3-4岁左右的样子,不知道是没有满足孩子的什么要求还是受了什么...
    小利利_优优妈妈阅读 4,119评论 0 2
  • 三国期间名将不计其数,其中能被曹操看作超越孙子的人就这么一个,凡是战争没有《孙子兵法》涉及不到的领域,可见曹操对他...
    秉笔春秋吕书生阅读 4,392评论 6 17
  • 前言: 文章开始之前先叨叨点个人情况,本人毕业于师范院校的英语教育,也获得了专八,一直从事外贸,翻译类工作,了解...
    一生两世阅读 3,836评论 0 1