2017-01-28 4 views
2

Ich habe eine statische Bibliothek (.a-Datei) in C++ geschrieben und kompiliert mit xcode. in dem Code C++ Ich habe:Laden Sie statische Bibliothek in Swift-Code

extern "C" void startA(const char * szCmdLne){ 
//bla bla 
} 

extern "C" void stopA(){ 
    //bla bla 
} 

Jetzt einen iOS-SDK in schnellen 2 (in Xcode) ich schreibe. Ich möchte die Bibliothek in das SDK laden und diese 2 Funktionen aufrufen (startA und stopA).

Was ist der richtige Weg? Ich habe versucht zu überbrücken, aber es funktioniert nicht.

Danke!

Antwort

0

Folgen folgenden Schritte aus:

1) Verknüpfen Sie die statische Bibliothek in Xcode bei Build-Phase -> Link Binary mit Bibliotheken.

2) Bibliotheks-Header-Datei im Swift-Projekt hinzufügen.

3) Müssen Sie einen Bridging-Header erstellen, um Bibliothek Api aufzurufen (Datei> Neu> Datei), wählen Sie dann "Quelle" und klicken Sie auf "Header-Datei".

4) In Leere Stopa() Starta (const char * szCmdLne) in Header-Datei überbrücken.

Jetzt sollten Sie diese APIs aus Ihrem Swift-Code aufrufen können. Für mehr Details: http://www.swiftprogrammer.info/swift_call_cpp.html#step2

+0

Vielen Dank! Ich schaffe es, ohne die Überbrückungsdatei zu arbeiten, erklärte ich die Funktion in der Schirmüberschrift. Das einzige Problem ist, dass diese Funktion öffentlich ist, sodass jeder, der dieses SDK verwendet, diese sehen/aufrufen kann. Wie kann ich sie privat machen? – kande

Verwandte Themen