module.modulemap

2019-04-01  本文已影响0人  搞好关系

swift 有UNSafePoint的概念,但是不能够与C/C++直接交互,但是对于C/C++模块操作就需要进行一些改进那就是今天的主角moulemap啦。
要想使用你自己的C/C++按照 import的方式在swift使用那么你需要经历以下几个简单配置
1 当然是将对应的C/C++源码文件导入到swift项目中
2 配置modulemap啦
3 import 使用啦

至于导入c/C++代码自不必说例如


image.png

内容很简单(定义一个结构体而已)

typedef struct User{
    char *name;
    unsigned char age;
} User;

看完了基本的C/C++文件定义完成,我们进行配置
1 新建一个空白文件
2 写入配置


image.png

内容如下

module Sk [system][extern_c]{
    header "./lib/include/sk-header.h"
    export *
}

3 Xcode build settings 搜搜import paths添加配置$(SRCROOT)/ModuleMap

image.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)

我们看看系统给我们做了什么


image.png

惊喜吧,通过这个我们可以在swift中直接导入C/C++的库啦

上一篇下一篇

猜你喜欢

热点阅读