swift 有UNSafePoint的概念,但是不能够与C/C++直接交互,但是对于C/C++模块操作就需要进行一些改进那就是今天的主角moulemap啦。
要想使用你自己的C/C++按照 import
的方式在swift使用那么你需要经历以下几个简单配置
1 当然是将对应的C/C++源码文件导入到swift项目中
2 配置modulemap啦
3 import 使用啦
至于导入c/C++代码自不必说例如
![](https://img.haomeiwen.com/i1635153/3e3ba6aca3df6616.png)
内容很简单(定义一个结构体而已)
typedef struct User{
char *name;
unsigned char age;
} User;
看完了基本的C/C++文件定义完成,我们进行配置
1 新建一个空白文件
2 写入配置
![](https://img.haomeiwen.com/i1635153/ac495372127f8c3e.png)
内容如下
module Sk [system][extern_c]{
header "./lib/include/sk-header.h"
export *
}
3 Xcode build settings 搜搜import paths
添加配置$(SRCROOT)/ModuleMap
![](https://img.haomeiwen.com/i1635153/937e195765fc95fa.png)
到此为止您就可以使用 import Sk
来使用您的C/C++
var skName = "SkeyBoy".data(using: .utf8)!
let age = 30
let user = User.init(name: skName.withUnsafeMutableBytes { $0 }, age: UInt8(age))
print(user)
我们看看系统给我们做了什么
![](https://img.haomeiwen.com/i1635153/d408d41668b97d2e.png)
惊喜吧,通过这个我们可以在swift中直接导入C/C++的库啦
网友评论