本文旨在说明静态库制作中的一些常见问题和特殊处理
1. 打包静态库需要的相关问题和设置
- 静态库中用到分类的需要在项目中设置这个参数:
Other Linker Flags
为-ObjC
或者-all_load
- 静态库中用到了
NSClassFromString
或者runtime
的objc_getClass
,但是转换出来的Class
一直为nil
。解决方法:在主工程的Other Linker Flags
需要添加参数-ObjC
即可 - 如果Xcode找不到框架的头文件,可能是忘记将它们声明为
public
了 Base SDK
指的是当前编译所用的SDK 版本,一般默认为当前xocde的最新版Build Active Architecture Only
设置成No
Deployment Target
它控制着运行应用需要的最低操作系统版本Skip Install
设置为Yes
Mach-O Type
静态库设置为Static Library
,动态库设置为Dynamic Library
,制作bundle
文件设置为Bundle
- 静态库中最好不要用
xib
,要用的话就将xib
放到bundle
文件中编译,然后xib
就会变成.nib
的文件 - 如果开发的静态库里面有
C
或者C++
,在使用的时候需要添加libc++.tbd
或者libstdc++.tbd
- **关于C语言中
Implicit declaration of function ‘XXXX’ is invalid in C99
警告:**C语言是过程化的编程语言,程序执行顺序是从上到下。如果在调用某函数的时候,函数在调用之前没有定义也没有声明,而是在调用之后定义,那么编译时Implicit declaration of function ‘XXXX’ is invalid in C99</