Dieser Beitrag enthält auch eine gute Erklärung dazu, wie dies mithilfe der Modulunterstützung von clang durchgeführt werden kann .
Es wird festgelegt, wie dies für das CommonCrypto-Projekt ausgeführt wird. Im Allgemeinen sollte es jedoch für jede andere C-Bibliothek funktionieren, die Sie in Swift verwenden möchten.
Ich habe kurz damit experimentiert, dies für zlib zu tun. Ich habe ein neues iOS-Framework-Projekt erstellt und ein Verzeichnis zlib erstellt, das eine module.modulemap-Datei mit den folgenden Angaben enthält:
module zlib [system] [extern_c] {
header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/zlib.h"
export *
}
Dann habe ich unter Ziele -> Binär mit Bibliotheken verknüpfen die Option Elemente hinzufügen und libz.tbd hinzugefügt.
Möglicherweise möchten Sie an dieser Stelle erstellen.
Ich konnte dann folgenden Code schreiben:
import zlib
public class Zlib {
public class func zlibCompileFlags() -> UInt {
return zlib.zlibCompileFlags()
}
}
Sie müssen nicht haben , um vor der zlib - Bibliothek Namen zu setzen, außer im obigen Fall ich die Swift - Klasse func die gleiche wie die C - Funktion genannt, und ohne die Qualifikation der Swift func endet oft , bis die Anwendung stoppt aufgerufen wird.