missing required architecture i3

作者: 大饼说科教 | 来源:发表于2016-04-08 20:48 被阅读631次

近期在做一个积分墙项目,里面集成了趣米的积分墙,通过真机调试一直没问题,但通过模拟器却一直报错,错误如下:

ld: warning: ignoring file /Users/mac/duomipu/duomipu/QumiADLib/libQumiAdSDK.a, missing required architecture i386 in file /Users/mac/duomipu/duomipu/QumiADLib/libQumiAdSDK.a (3 slices)

Undefined symbols for architecture i386:

"_OBJC_CLASS_$_QumiConfigTool", referenced from:

objc-class-ref in QuMiRecommenderViewController-54438B5CF44A1B46.o

"_OBJC_CLASS_$_QumiOperationApp", referenced from:

objc-class-ref in QuMiRecommenderViewController-54438B5CF44A1B46.o

ld: symbol(s) not found for architecture i386

clang: error: linker command failed with exit code 1 (use -v to see invocation)

尝试了网上给出的几种方法,比如在Compile Sources里面把相关文件导入、在Search Path里面把路径配好、重新导入sdk等,但都不见效果。

通过与趣米官方sdk中demo的比较,发现Build Active Architecture Only选项中,我的设置是debug和release均为NO ,而范例的配置是:debug为YES,release为NO。于是,将我自己的配置也调成这样,重新编译,成功。

这个属性设置为yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本。

而设置为no时,会编译所有的版本。

这个是设备对应的architecture:

armv6:iPhone 2G/3G,iPod 1G/2G

armv7:iPhone 3GS/4/4s,iPod 3G/4G,iPad 1G/2G/3G

armv7s:iPhone5, iPod5

编译出的版本是向下兼容的,比如你设置此值为yes,用iphone4编译出来的是armv7版本的,iphone5也可以运行,但是armv6的设备就不能运行。

所以,一般debug的时候可以选择设置为yes,release的时候要改为no,以适应不同设备。

相关文章

网友评论

    本文标题:missing required architecture i3

    本文链接:https://www.haomeiwen.com/subject/uaivlttx.html