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