第一步:创建静态库工程
第二步:导入C++源码
第三步:设置Build Settings-Search Paths-Header Search Paths
设置Header Search Paths的作用是让C++代码能识别到工程中的文件路径,如果不设置肯定会报错 XXX can not found,文件找不到。
提示1:include <>与" "要区分好,否则设置了Header Search Paths也引用不到自己的C++头文件
引用系统库 #include <X>
引用自己写的C++源码 #include "X"
$(SRCROOT)代表工程的根目录,如果不设置这一步,代码里如果引用
提示2:因为我们工程里有很多同名文件,所以我没有以递归的方式设置根目录,而是把几个被引用的子目录单独添加进了Paths中。如果你的源码没有同名文件,只添加一个$(SRCROOT)即可,后面的non-recursive改为recursive,也就是由非递归改成递归,自动把根目录下的所有文件夹都添加进paths中。
第四步:修改C++14不支持的源码
我的C++源码是Linux系统下使用的服务器代码,因此有很多库是Linux的,Xcode上的很多语法特性C++11之后不支持了,点击build或者Analize找到报错,全部改掉。
第五步:确定打包平台
如果是真机需要,需要勾选真机,模拟器则勾选模拟器,这一步很重要
如果选错了扔到工程里取使用,会出现以下错误
第六步:点击build生成静态库
编译报错汇总
报错1:C++11warning: invalid suffix on literal; C++11 requires a space between literal and string macro ...
解决方案: 字符串和字母之间需要一个空格,举个例子,如下图,ETC和前面的双引号需要空格
报错2:'xxx' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64
结局方案:BuildSettings -> Enable Bitcode
,设置为 NO。