undefined symbol for architecture x86_64 (i386)

(2)**undefined symbol for architecture x86_64 **
翻译 :x86_64架构有以下这些没有定义的符号


E16FF80A-8BF8-440B-A90F-162EE119C4A8.png

**undefined symbol for architecture i386 **
Undefined symbols for architecture i386:
OBJC_CLASS$_XXX”, referenced from:
objc-class-ref in XXX
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
添加其他类库的时候也可能因为没有添加framework或者是它们依赖的库同样也会出现这样错误。
这样错误还是比较常见,一般原因就是少框架,少静态库!
步骤1:检查框架、静态库是否齐全

添加框架、静态库等

步骤2:检查编译源文件是否齐全
如果报的错误不是来自于第三方库,我们需要检查compile Sources中.m文件是否完全。

检查编译源文件是否齐全

步骤3:检查框架的配置:

检查Architectures配置是否符合该类库要求

ios的指令集有以下几种:

1,armv6,支撑的机械iPhone,iPhone2,iPhone3G及对应的iTouch

2,armv7,支撑的机械iPhone4,iPhone4S iPod 3G/4G,iPad 1G/2G/3G

3,armv7s,支撑的机械iPhone5,iPhone5C iPod5

4,arm64,支撑的机械:iPhone5S ,iPad Air开始的iPad等新设备

机械对指令集的支撑是向下兼容的,是以armv7的指令集是可以运行在iphone5S的,只是效力没那么高罢了~

Architecture : 指你想支撑的指令集。
Valid architectures : 指即将编译的指令集。
Build Active Architecture Only : 只是否只编译当前实用的指令集。

这个属性设置为Yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本。 而设置为No时,会编译所有的版本。
如今是2014年初,其实4和4S的用户还是蛮多的,而iphone3之类的机械几乎没有了,所以我们的指令集最低必须基于armv7.

1,若是想本身的app在各个机械都可以或许最高效力的运行,则须要将Build Active Architecture Only改为NO,Valid architectures选择对应的指令集:armv7 armv7s arm64。这个会为各个指令集编译对应的代码,是以最后的 ipa体积根蒂根基翻了3倍。(若是不在乎app大小的话,应当如许做)

,若是想让app体积对峙最小,则现阶段应当选择Valid architectures为armv7,如许Build Active Architecture Only选YES或NO就无所谓了

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

相关阅读更多精彩内容

友情链接更多精彩内容