在自己制作静态库的时候有时在使用的时候会出现file was built for archive which is not the architecture being linked (i386)这个问题,会出现以下类似的报错
ld: warning: ignoring file /Users/valuelabs/Desktop/DruvaProject/libraries/libnetUtils.a, file was built for archive which is not the architecture being linked (i386) Undefined symbols for architecture i386: "_OBJC_CLASS_$_netUtils", referenced from: objc-class-ref in ViewController.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)
这个在制作的时候需要注意几个事项的,以前的那个教程《xcode如何创建静态库.a文件并使用》并没有说这些事项,现在补充一下。
这个也是出现上面报错的解决办法
一、设置Architecture的类型
首先把 Build active Architecture only 设置为 NO;
然后把 Valid Architectures 补全
二、合并静态库
选择 run 的时候两个都可以,但是是有差别的,如果是模拟器生成的静态库,就只能在模拟机上运行,如果是链接真机或者选择的真机生成,那么生成的库就只能在真机上使用,为了让生成的库在真机和模拟机上面都可以使用,就需要手动合并。怎么合并请看这个文章《合并静态库》
三、找到生成的库
run 之后,如果是选的模拟器生成的静态库在右边那个 full path 里面是找不到的,需要去掉那个后面的.a文件,然后进入到文件夹,选择上级文件夹,使用下面的那个文件夹里面的.a文件
版权属于:东哥笔记 - DongGe.org
本文链接:https://dongge.org/blog/119.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!