(更新)汇总:ios开发出现Undefined symbols for architecture xxx问题的解决办法
(此贴为更新贴,可以直接跳转到分割线之后看)
此前公司项目中做一个实时监控的app
在xcode运行时,碰到了如下截图的问题:
关键字:
_VTDecompressionSessionInvalidate、_VTDecompressionSessionDecodeFrame、_VTDecompressionSessionCreate
直接在工程的bulid phases中引入VideoToolbox.framework,就可以解决问题了!
在stack oveFflow找到的对应解决办法:
https://stackoverflow.com/questions/35645230/ffmpeg-libavcodec-a-xcode-linker-issues-undefined-symbols-for-architecture-arm
================================ 分割线 ==============================
汇总出现Undefined symbols for architecture xxx问题的解决办法
1. .m文件没有导入
在Build Phases里的Compile Sources 中添加报错的文件
找到图示红色框中的两个.m文件并导入
2. .framework/.a文件没有导入
静态库编译时往往需要一些库的支持,查看你是否有没有导入的库文件
同样是在Build Phases里的Link Binary With Libraries中添加
3. 重复编译,可能你之前复制过两个地方,在这里添加过两次,删除时系统没有默认删除编译引用地址
在Build Settings里搜索Search Paths 将里面Library Search Paths 中没有用到的地址删除
假如以上三种方法均无效!那么在这我得提醒,当出现此类运行出错时,我们关注的报错信息一定要全!
通常情况下(指我个人),都只会关注如下截图图1的信息,却忽略了图2
最近在开发一个关于扫二维码的项目,用到了ZXingObjC库,但是却遇到了Undefined symbols for architecture xxx的问题!当时我就是只在意图1的信息,然后我尝试了上面提到的所有办法,都没有效果!
偶然之下,我注意到了图2,发现图2上面有一行特别醒目的文字(图二中已用红色框选中),于是寻思是否和工程的支持ios版本有关系,我之前一直是ios8.0的,后来我将工程的development target改为11.0,运行,之前的报错神奇地消失了,项目正常运行!
所以我才发现这图2也是很重要的,不可忽视的!
这里明确一点,要是再遇到此类问题,还是按照前文提到的三种方法去排除问题!这里只是想阐明一点,图2的信息是很重要的,可能报错的具体原因就会在图2中有提及到的!
(如有言语欠妥之处,还望诸位海涵!)