2016-11-22 20 views
0

フレームワークターゲットを使用するiOSアプリケーションプロジェクトでXcode 8.1で次のコンパイルエラーが発生しました。これは、次のコードを含むココアポードを使用します。いくつかのC関数:「アーキテクチャx86_64でシンボルが見つかりません」C関数によるエラー

Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_CUsingClass", referenced from: objc-class-ref in libSDKFile.a(SessionManager.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

は、私はすでに私が見つけたすべてのソリューション(設定/アーキテクチャなどの構築)とCコードを使い果たしたにも使用しています(Cヘッダファイル内)にextern「C」ディレクティブ:

#ifdef __cplusplus 
    #define CODE_EXPORT extern "C" 
#else 
    #define CODE_EXPORT extern 
#endif 

CODE_EXPORT unsigned int myCFunction(const char *src, char *dst, unsigned int dst_size); 

Cファイルでcocoapod libを使用するフレームワークターゲットは正常にコンパイルされますが、 appターゲットが失敗し、上記のエラーが発生します。 C関数のincludeをコメントアウトすると、Appは正常にコンパイルされます。

誰にも解決策がありますか?

+0

あなたは間違った場所を探していると思います。問題はC関数には関係しません。代わりに、クラス 'CUsingClass'は完全に欠けています。このクラスは、おそらくObjective-Cで書かれています。このクラスの詳細を教えてください。あなたがCocoapod経由で追加したフレームワークの一部ですか?その目的は何ですか? Cクラスのクラスですか? – Codo

+0

@Codoはい、CUsingClassはCコード(同じpodにもあります)を含むCocoapodのObjective-Cクラスです。このクラスでは、CファイルからC関数を1行で呼び出す以外は、何も面白くありません。 – BadmintonCat

+0

'CUsingClass'クラスのポッドは、あなたのポッドであり、サードパーティのポッドではありません。 CocoaPodポッドで別のフレームワークを使用していますか?その場合、問題はポッドの設定方法によって決まります。それ以外の場合は、ポッドをプロジェクトに組み込む方法と同じでしょう。 – Codo

答えて

0

第三者ポッドの依存関係エントリが、アプリケーションターゲットのポッドとして使用される独自のフレームワークターゲットを持つために使用されるpodspecファイルで正しく設定されていなかったことがわかりました。だから、正しい依存関係のエントリを追加してインストールポッドをやって(とクリーン)、その後、この問題を修正:

s.dependency "ThirdpartyLib/Subspec" 

私はsubspecがありませんでした。

関連する問題