В этом посте также есть хорошее объяснение того, как это сделать, используя поддержку модуля clang .
Он создан с точки зрения того, как это сделать для проекта CommonCrypto, но в целом он должен работать для любой другой библиотеки C, которую вы хотите использовать из Swift.
Я кратко экспериментировал с этим для zlib. Я создал новый проект iOS Framework и создал каталог zlib, содержащий файл module.modulemap со следующим:
module zlib [system] [extern_c] {
header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/zlib.h"
export *
}
Затем в Targets -> Link Binary With Libraries я выбрал add items и добавил libz.tbd.
Вы можете построить на этом этапе.
Затем я смог написать следующий код:
import zlib
public class Zlib {
public class func zlibCompileFlags() -> UInt {
return zlib.zlibCompileFlags()
}
}
Вам не нужно помещать имя библиотеки zlib впереди, за исключением того, что в приведенном выше случае я назвал функцию класса Swift такой же, как и функцию C, и без квалификации функция Swift будет вызываться повторно, пока приложение не остановится.