コードを再利用するために、Xcode iPhone プロジェクトを複数の小さなプロジェクトに分割しています。構造は次のようになります。
+------------+
| App |
+------------+
|
+------------------+
| |
+--------------+ +--------------+
| Static Lib A | | Static Lib B |
+--------------+ +--------------+
| |
+----------------+
|
+--------------+ +----------------+
| Static Lib Z |--| Static Lib KAL |
+--------------+ +----------------+
すべてが正しくコンパイルされますが、アプリがリンクされるとすぐに、リンカーは KAL (オープン ソースのカレンダー ライブラリ) ライブラリの 2 つのシンボルを見つけることができません。各ライブラリには相互参照があり、すべてのアーカイブは「バイナリをライブラリにリンク」ビルド フェーズに追加されます。
エラーは次のとおりです。
未定義のシンボル:
"_OBJC_CLASS_$_KalViewController"、参照元:
libA.a(AViewController.o) の objc-class-ref-to-KalViewController
"_OBJC_CLASS_$_KalDate"、参照元: libA
の objc-class-ref-to-KalDate .a(AViewController.o)
ld: シンボルが見つかりません
collect2: ld は 1 つの終了ステータスを返しました
私はLibAのAViewControllerでLibZのクラスを使用しています.LibKALのクラスを使用しています。
PS: A と B の分離は、アプリのすべてのビルドが 2 つによって提供される機能を必要とするわけではないという単純な理由によるものです。