私は1つのアプリケーションを作成しています.1つのサードパーティライブラリを追加しています.そして私は1つの静的ライブラリを作成しています.だから今私は自分のライブラリをそのサードパーティライブラリに含めたいです.アプリケーションに追加する前にそのサードパーティライブラリをコンパイルする場合、両方に対して単一の.aファイルのみを作成するか、別のサンプルアプリケーションの.aファイルにサードパーティとともにライブラリ.aファイルを含める必要があります.また、単一の.aファイルを作成する場合、.hファイルは何ですかサードパーティのライブラリ .h ファイルまたは私のライブラリ .h ファイルのみを含める必要があります。
2 に答える
これがあなたが求めているものである場合、静的ライブラリは互いに埋め込まれていません。
スタティック ライブラリは、オブジェクト ファイルの単なるコレクションであり、それぞれがコンパイル ユニット (たとえば、.m ファイル) に対応しています。
実際には、2 つのスタティック ライブラリを逆アセンブルしてすべてのコンポーネント オブジェクト ファイルを抽出し、それらを新しいスタティック ライブラリに再アセンブルできますが、これはコンパイラが通常行うことではありません。
たとえば、2 番目の静的ライブラリ lib2.a に依存する静的ライブラリ lib1.a があるとします。両方のライブラリを関数にリンクして実行可能ファイルを作成しますmain
。2 つのライブラリを手動で「マージ」しない限り、lib1.a を使用するたびに、lib2.a もリンクする必要があります。
これは、Xcode で非常に簡単に確認できます。
ヘッダー ファイルに関しては、両方のライブラリのヘッダー ファイルも含める必要があります。
2 つの静的ライブラリをマージして、両方のオブジェクト ファイルを含む新しい静的ライブラリを作成する方法について詳しく知りたい場合は、こちらまたはこちらを確認してください。
あるスタティック ライブラリを別のスタティック ライブラリにリンクする場合、結果として結合されたスタティック ライブラリをアプリケーションにリンクするだけで済みます。ライブラリのパブリックインターフェイスを定義するヘッダーと、サード パーティ ライブラリのヘッダーをアプリケーションに含める必要があります。ライブラリまたはサード パーティで使用されるフレームワークはすべて、アプリケーションとリンクする必要があります。