在Linux上有方法可以编译本地的C或C++代码并将其暴露给Swift吗?我注意到一些苹果库(例如libdispatch)是用纯C编写的,只需导入即可在Swift中访问它们。
以设置示例为例,假设我有两个文件Car.c
和Car.h
,定义了名为Car
的结构体。是否有办法通过编写导入语句来编译它们并在Swift中使用它们?
import Car
我尝试在包含 .c
, .h
和 Package.swift
文件的目录中编写 module.modulemap
文件:
module Car {
header "Car.h"
export *
}
并运行 swift build
。这将产生错误:
<unknown>:0: error: unexpected 'commands' value (expected map)
<unknown>:0: error: unable to load build file
我正在使用Swift版本3.0-dev(2016年3月24日)
[更新1]
我联系了Swift Package Manager的创作者之一Max(mxcl),他告诉我摆脱modulemap
并将.c
和.h
文件直接放在Sources
文件夹中。我这样做后,软件包编译了,但它不能作为模块使用。此外,我无法调用.h
文件中定义的任何函数。