4

別の Xcode iOS プロジェクトをサブプロジェクトとして含む 1 つの Xcode iOS プロジェクト (スーパー プロジェクトと呼びます) があります。

サブプロジェクトは iOS 静的ライブラリです。http://www.blog.montgomerie.net/easy-xcode-static-library-subprojects-and-submodulesで説明されているすべてのことを行いました。

したがって、スタティック ライブラリは、スーパー プロジェクトのターゲットのビルド フェーズの下にターゲット依存関係としてリストされます。

静的ライブラリは、スーパー プロジェクトのターゲットのビルド フェーズで既にバイナリ ライブラリとしてリンクされています。スーパー プロジェクトのクラスでは、サブプロジェクトのクラスを参照できますが、スーパー プロジェクトをビルドしようとすると、未定義のシンボルで大量のエラーが発生します。

これらの「未定義のシンボル」は、サブプロジェクト (静的ライブラリ) が依存するフレームワークのクラスです。私の質問は、サブプロジェクトが依存するフレームワークのヘッダー ファイルを見つけられるように、スーパー プロジェクトのビルド プロセスを取得するにはどうすればよいですか?

他に何か間違ったことをしていない限り、静的ライブラリをリンクするとこれが処理されると思いました。念のため、サブプロジェクトが依存するすべてのフレームワークをバイナリ ライブラリとしてスーパー プロジェクトにリンクしてみました。

これによりすべてのエラーが解消されましたが、33 個の重複シンボルがあったため、ビルドは失敗しました (現在、両方のプロジェクトが同じフレームワークをリンクしているため)。

スーパー プロジェクトがサブプロジェクトのフレームワークの依存関係をリンクする必要はないと思います。前もって感謝します。

4

1 に答える 1

2

あなたの問題は、ビルドが大量の「未定義シンボル」エラーで失敗したときに、スーパープロジェクトがすべての静的ライブラリヘッダーを見つけられないことだと思います。ビルド設定タブの下のスーパープロジェクト設定パネルを見てください。「ヘッダー検索パス」と「ユーザー ヘッダー検索パス」(または同様のもの) を見つけて、それらの中にサブプロジェクト ヘッダー フォルダーのパスを配置します。パスの末尾に /** を配置すると、xcode はパスのすべてのサブフォルダー内を検索します。「常にユーザーヘッダー検索パスを検索する」フラグがオン/真であることを確認してください。

于 2014-02-06T12:02:21.050 に答える