升级Xcode 16 后OC 与Swift混编项目提示Undefined symbol *问题

第一种可能,升级Xcode导致链接的库失效

刚刚升级了Xcode16.1 发现项目无法运行了,提示了大量的Undefined symbol *,检查发现这些错误都出现在了同一个SDK中,我就去找第三方厂家给提供的SDK Demo,发现人家的Demo可以正常运行,然后我就创建了一个OC环境的项目按照人家的文档在Generate中导入相关的库发现还是不行,发现有时候在这块点击+号导入的.tbd库在这块不显示但是在左侧Frameworks文件夹里是有的,运行项目还是不行

之后我又尝试在 Build Phases - Link Binary and Library中重新导入发现可以运行了不会报Undefined symbol *错误了。本以为解决了,但是回到自己的项目重新导系统库运行发现还是不行。

因为我原来项目是OC、Swift混编的我尝试在新建的OC项目中加入Swift代码,运行后果然报了错,之后我开始查找项目添加Swift后与添加前的配置差别果然发现了不同之处,然后尝试调整参数设置或者删除参数最后发现是受到参数 SWIFT_OPTIMIZATION_LEVEL的影响

在项目中搜索SWIFT_OPTIMIZATION_LEVEL有的项目会出搜索到图1 有的会搜索到图2,这是我遇到的两种环境

1. 搜索出来的第一种情况 参数在Swift Compiler - Code Generation下的子参数Optimization Level

图1

图1的情况点击选项会出现三种,如下图,选择第二个-O 即可

2. 搜索出来的第二中情况 参数在User - define

需要手动输入将参数SWIFT_OPTIMIZATION_LEVEL的值改为-O

图2

图2.2

这种方法虽然可能能解决undefined symbol * 问题,但是在开发调试时会导致其他问题,例如调试时字典数组中的值无法取出等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容