Xcode编译时报_objc_class_$_"XXXXXX ",referenced from解析之一

今天在导入一个第三方库时,用真机调试一直正常,改用模拟器,突然报了这个错误,一时纳闷,只好找朋友求助。从朋友那里得知,这是因为所用的SDK不支持X86_64造成的,因为模拟器和真机的架构是不一样的,那么我们怎么知道报这个错时是因为SDK不支持X86_64的原因呢,且听我细细讲解。
Xcode编译时报_objc_class_$_"XXXXXX ",referenced from解析之一
文章图片


Xcode编译时报_objc_class_$_"XXXXXX ",referenced from解析之一
文章图片


首页打开你的终端,输入lipo-info,然后将你sdk中的.a文件拖入其中,这时我们看到了这样一行命令(sdk中.a的路径)
Xcode编译时报_objc_class_$_"XXXXXX ",referenced from解析之一
文章图片


Xcode编译时报_objc_class_$_"XXXXXX ",referenced from解析之一
文章图片


然后点回车,我们看到下图
Xcode编译时报_objc_class_$_"XXXXXX ",referenced from解析之一
文章图片


Xcode编译时报_objc_class_$_"XXXXXX ",referenced from解析之一
文章图片


在绿框中,我们清晰的看到,没有X86_64的显示,因而断定不支持模拟器调试,模拟器调试报错。
没办法,只好找做sdk的技术人员,他们也很给力,一连给了3个.a文件,有支持真机的,支持模拟器的,有真机模拟器都支持的。不过这里提醒大家一点,有模拟器真机都支持的sdk固然方便,但是会造成ipa包的大小变大,如果app的大小比较在乎,建议调试时用都支持的,打包上线时再换成只支持真机架构的.a文件。
好了,让我们在终端用同样的方法来看一下新的.a文件所支持的架构
Xcode编译时报_objc_class_$_"XXXXXX ",referenced from解析之一
文章图片

Xcode编译时报_objc_class_$_"XXXXXX ",referenced from解析之一
文章图片


绿框中我们看见,可支持X86_64,哇,连i386都支持了,真够意思!~替换掉.a,我们的问题就解决了。如果你是单人开发,用不到svn,可以到此就结束了。如果你是多人开发,考虑到替换.a文件会造成svn的一系列问题,请看我的下一篇博客。
【Xcode编译时报_objc_class_$_"XXXXXX ",referenced from解析之一】

    推荐阅读