フレームワークターゲットを使用する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は正常にコンパイルされます。
誰にも解決策がありますか?
あなたは間違った場所を探していると思います。問題はC関数には関係しません。代わりに、クラス 'CUsingClass'は完全に欠けています。このクラスは、おそらくObjective-Cで書かれています。このクラスの詳細を教えてください。あなたがCocoapod経由で追加したフレームワークの一部ですか?その目的は何ですか? Cクラスのクラスですか? – Codo
@Codoはい、CUsingClassはCコード(同じpodにもあります)を含むCocoapodのObjective-Cクラスです。このクラスでは、CファイルからC関数を1行で呼び出す以外は、何も面白くありません。 – BadmintonCat
'CUsingClass'クラスのポッドは、あなたのポッドであり、サードパーティのポッドではありません。 CocoaPodポッドで別のフレームワークを使用していますか?その場合、問題はポッドの設定方法によって決まります。それ以外の場合は、ポッドをプロジェクトに組み込む方法と同じでしょう。 – Codo