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