Cet article a également une bonne explication sur la façon de le faire en utilisant le support du module de clang .
Il est encadré en termes de comment faire cela pour le projet CommonCrypto, mais en général, cela devrait fonctionner pour toute autre bibliothèque C que vous souhaitez utiliser à partir de Swift.
J'ai brièvement expérimenté cette opération pour zlib. J'ai créé un nouveau projet de cadre iOS et créé un répertoire zlib, contenant un fichier module.modulemap avec les éléments suivants:
module zlib [system] [extern_c] {
header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/zlib.h"
export *
}
Ensuite, sous Targets -> Link Binary With Libraries, j'ai sélectionné ajouter des éléments et ajouté libz.tbd.
Vous voudrez peut-être construire à ce stade.
J'ai alors pu écrire le code suivant:
import zlib
public class Zlib {
public class func zlibCompileFlags() -> UInt {
return zlib.zlibCompileFlags()
}
}
Vous n'êtes pas obligé de mettre le nom de la bibliothèque zlib devant, sauf dans le cas ci-dessus, j'ai nommé la fonction de classe Swift de la même manière que la fonction C, et sans la qualification, la fonction Swift finit par être appelée à plusieurs reprises jusqu'à ce que l'application s'arrête.