Xcode如何添加静态库?

Xcode如何添加静态库?,第1张

1、右键点击项目,选择右键菜单的"Add files to xxx...."

2、选择要使用的静态

3、添加静态库文件之后,在项目导航中和“Linked Frameworks and Libraries" 中看到刚刚加入的静态库

4、接着我们添加静态库对应的头文件目录。

选择“Build Settings”,展开“Search Paths”,双击红框标注的“Header Search Paths”

5、在d出框中增加静态库对应的头文件目录

1.创建静态库工程,工程命名为BaseSDK,生成的.a文件名变成libBaseSDK。

2.删掉自动生成的文件BaseSDK.h  BaseSDK.m

3.添加你的实用类文件

4.添加Headers Phase

5.将暴露给外面用的头文件加入进来,加进来后要移到public中去(不移到public中也没错,只是下面第11步中不会出现.h文件,需要从库的源码中找)

6.然后设置编译模式,打开Xcode菜单Product--->Scheme--->Edit Scheme,改为release模式,因为最终打包是要用release模式

7.设置Build Active Architecture Only

模拟器:iPhone4s~5 : i386 iPhone5s~6plus : x86_64

真机:iPhone3gs~4s : armv7 iPhone5~5c : armv7s iPhone5s~6plus : arm64

如果Build Active Architecture Only设置为YES,那么编译出来的.a静态库就只包含当前设备的指令集。

举个例子:如果我们选择iPhone 5模拟器编译,则编译出来的.a静态库只能用iPhone4s~5模拟器跑程序,用iPhone5s~6plus,则会报找不到x86_64的APPBaseSDK库。

设置为NO,则会把所有指令集的都打包合并。因此静态库有个缺点就是静态库包比源码大很多。

8.设置最低支持版本

9.编译生成静态库

编译时,需要用模拟器和真机各编译一次,这样Products目录下的libBaseSDK.a静态库才会变为黑色,右键show in Finder,可以进入Products目录下。

10.合并模拟器和真机静态库文件libBaseSDK.a,打开终端命令如下

lipo -create /Users/zhanglinfeng/Library/Developer/Xcode/DerivedData/BaseSDK-cexmrzesjuswutaldkedwjpnpxnk/Build/Products/Release-iphoneos/libBaseSDK.a /Users/zhanglinfeng/Library/Developer/Xcode/DerivedData/BaseSDK-cexmrzesjuswutaldkedwjpnpxnk/Build/Products/Release-iphonesimulator/libBaseSDK.a -output /Users/zhanglinfeng/Desktop/libBaseSDK.a

11.使用.a静态库

将静态库拖入新建的工程,我这里拖到下图箭头所指的UseA文件夹下(如果你要拖到其他目录,就要改Library Search Paths,后面我会介绍Library Search Paths路径相关知识),再将暴露给外面用的.h文件也拖入工程,

注意:如果没有include里的.h文件.那就从库的源码中挑出一些需要暴露的.h文件。

导入头文件就可以使用了,如下图

注意:如果要用到静态库中的category方法,需要设置Other Linker Flags为-ObjC(注 意大小写,有些资料里大小写搞错了坑死我了)。引入了-ObjC标志,它的作用就是将静态库中所有的和对象相关的文件都加载进来本来这样就可以解决问题 了,不过在64位的Mac系统或者iOS系统下,链接器有一个 bug,会导致只包含有类别的静态库无法使用-ObjC标志来加载文件。变通方法是使用-all_load 或者-force_load标志,它们的作用都是加载静态库中所有文件,不过all_load作用于所有的库,而-force_load后面必须要指定具 体的文件。

在VS工程中,添加c/c++工程中外部头文件及库的基本步骤:

1、添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。

2、添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。

然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名。

3、添加工程引用的dll动态库:把引用的dll放到工程的可执行文件所在的目录下。

注意:第一步可以不用,直接在工程里加入动态库的头文件,在使用代码处引用这个头文件。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11746019.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存