Undefined symbols for architectu
2022-08-03 本文已影响0人
吕建雄
在项目开发过程中,遇到Undefined symbols for architecture arm64 错误的概率还是比较高的,出现这样的错误,意味着项目某些地方不支持arm64指令集
解决问题之前,先了解清晰涉及到的知识点:
iOS支持的指令集包含:armv6、armv7、armv7s、arm64,在项目TARGETS---->Build Settings--->Architecturs 可以修改对应的指令集,目前Standard Architectures(arm64, armv7)
XCode中可设置:
1、Architectures将制定项目将支持哪些指令集
2、Build Active Architecture Only 用于设置是否只编译当前使用的设备对应的arm指令集,当该选项设置成YES时,具体编译的指令集取局于当前的设备支持的armv指令集,比如:Architectures 设置为 arm64,armv7。如果当前设备只支持armv7,则只会生成armv7指令集的二进制包
当了解了以上原理后,面对Undefined symbols for architecture arm64 类似的问题就迎刃而解啦。
解决方案一:
可以打开终端借助“lipo - info 静态库名称.a”命令来查看出现问题的静态库支持的指令集
lipo -info libLocalShopping.a
然后根据输出可知支持哪些指令集,然后再去下载对应的指令集静态库
解决方案二:
如遇到类似下图中的错误:
error优先去查看是否是由于缺失import头文件,导致;