iOS静态库遇到的坑

2016-11-01  本文已影响146人  FredYJH

问题:

问题分析:

armv6

armv7

armv7s

arm64

问题解决:

1.检查一下静态库的配置路径是否正确

Build Settings>Search Paths>Library Search Path(一定要认真检查)

2.查看了静态库所支持的架构

打开终端输入查看命令lipo - info xxx.a ,结果如下:


lipo.png
3.检查一下Architectures的配置

Architectures:该编译选项指定了工程将被编译成支持哪些指令集,支持指令集是通过编译生成对应的二进制数据包实现的,如果支持的指令集数目有多个,就会编译出包含多个指令集代码的数据包,造成最终编译的包很大。
Build Active Architectures Only:当该选项设置成YES时,你连上一个armv7指令集的设备,就算你的Valid Architectures和Architectures都设置成armv7/armv7s/arm64,还是依然只会生成一个armv7指令集的二进制包。通常情况下,该编译选项在Debug模式都设成YES,Release模式都设成NO。
Valid Architectures:该编译项指定可能支持的指令集,该列表和Architectures列表的交集,将是Xcode最终生成二进制包所支持的指令集。
注意:1、指令集是向下兼容的。比如,armv7s指令集的设备,可以兼容运行使用armv7、armv6编译的程序。可以根据自己需要配置。

4.设置编译参数

Build Settings -> Linking -> Other Linker Flags
添加对应的库文件:-lAPayLib

注:
1.前面加横杠’-‘,l,编译的时候xcode默认会自动把库名加上lib前缀。
2.如果静态库有category,那么需要添加-ObjC参数标识,否则可能会报:unrecognized selector sent to instance
3.参数说明引用

参考:http://www.cnblogs.com/bomo/p/4760791.html

上一篇 下一篇

猜你喜欢

热点阅读