2016-04-18 2 views
1

Ich versuche, C++ - Code (fuzzylite.com) in ein Swift-Framework-Projekt zu integrieren, und ich erhalte Build-Fehler. Soweit ich weiß, können Sie in Swift-Framework-Projekten keinen Bridging-Header verwenden, sondern müssen die Quelle in die Umbrella-Header einfügen. Ich wickelte den C++ Code in Objective-C-Klassen und enthalten dann die Objective-C-Header in dem Dachkopf als solche:Der Versuch, C++ - Code in ein Swift-Framework-Projekt mit XCode zu integrieren - schlägt fehl

#import <Fuzzylite/ObjCWrapper.h> 

alle Schritten Gefolgt wie hier erwähnt (Clarification on adding Objective C code to a swift dynamic framework), aber sie nicht wirklich funktionieren, weil Es ist nicht in der Lage, das von Objective-C umschlossene C++ - Framework zu finden. Jede Hilfe wird sehr geschätzt!

Antwort

1

es löste das durch folgenden Schritte ausführen:

  1. Added C++ Quellverzeichnis in XCode Projekt
  2. C Funktion Wrapper C++ Instanzmethoden Expose
  3. Erstellt C-Header-Datei Wrapper für die C++ Projekt wie solche :

    #ifndef Header_h 
    #define Header_h 
    #ifdef __cplusplus 
    extern "C" { 
    #endif 
    void hello(char *str); 
    #ifdef __cplusplus 
    } 
    #endif 
    #endif /* Header_h */ 
    
  4. in der Umbrella-Header-Datei (in meinem Fall der Name der Header-Datei Regenschirm ‚TestSDK.h‘) für das Rahmenprojekt war (denken Sie daran, dass, da dies ein Rahmen Ziel war, gibt es keinen Brückenkopf beteiligt war, als der Fall ist, wenn eine App) bauen, habe ich die folgenden .:

    #ifdef __cplusplus 
    #import "fuzzylite/fl/Headers.h" 
    #endif 
    
  5. Hinzugefügt -I/zu XCode-> Ziel-> Build-Einstellungen-> Andere C-Flags. In meinem Fall war der Weg:

    -I$(PROJECT_DIR)/TestSDK/fuzzylite/ 
    

Das ist für mich gearbeitet. Ohne Schritt 5 erhielt ich Pfad-Include-Fehler.

+0

Ich versuche, dasselbe zu tun, aber meine externen "C" -Funktionen, wenn nicht deklariert geben undefinierten Symbol Fehler. – abhi

Verwandte Themen