2016-04-18 1 views
1

私はC++コード(fuzzylite.com)をSwiftフレームワークプロジェクトに統合しようとしています。私が理解しているところでは、Swiftフレームワークプロジェクトでブリッジヘッダーを使用することはできません。むしろUmbrellaヘッダーにソースを含める必要があります。私は、Objective-CのクラスでのC++のコードをラップしてからのような傘ヘッダーでのObjective-Cヘッダが含まれていました。ここに述べたようにXcodeを使ってSwiftフレームワークプロジェクトにC++コードを統合しようとしていません -

#import <Fuzzylite/ObjCWrapper.h> 

は(Clarification on adding Objective C code to a swift dynamic framework)すべての手順を追ったが、それは実際に動作しませんので、 Objective-CラップC++フレームワークを見つけることができません。どんな助けも高く評価されます!

答えて

1

は、次の手順を実行して、それを解決:

Xcodeプロジェクトに
  1. 付加されたC++ソースディレクトリ
  2. C++インスタンスメソッドなどのようなC++のプロジェクトのためのCヘッダファイルのラッパーを作成し
  3. にC関数ラッパーを公開します:私の場合は傘のヘッダファイル(アンブレラヘッダファイルの名前で

    #ifndef Header_h 
    #define Header_h 
    #ifdef __cplusplus 
    extern "C" { 
    #endif 
    void hello(char *str); 
    #ifdef __cplusplus 
    } 
    #endif 
    #endif /* Header_h */ 
    
  4. フレームワークプロジェクトのための「TestSDK.h」)が(これはフレームワークの目標だったので、アプリを構築するときにそうであるように、関連する一切のブリッジヘッダがなかったことを覚えておいてください)だった、私は次のように置く:

    #ifdef __cplusplus 
    #import "fuzzylite/fl/Headers.h" 
    #endif 
    
  5. -I/to XCode-> Target-> Build Settings-> Other C Flagsを追加しました。私の場合は、パスされました:

    -I$(PROJECT_DIR)/TestSDK/fuzzylite/ 
    

これは私のために働きました。ステップ5がなければ、パスインクルードエラーが発生していました。

+0

未定義のシンボルエラーを出すと宣言されていない場合、私は同じことをしようとしていますが、extern "C"関数を使用しています。 – abhi

関連する問題