0

Xcode 5 で静的ライブラリにリンクするのに問題があります。Pro iOS 5 ツールでの静的ライブラリの構築と使用に関する章を読みました。静的ライブラリを作成した後に行うように言われたことは、[ビルド フェーズ] タブでフレームワークにリンクすることでした。その部分はかなり簡単です。次に、ビルド設定の「ヘッダー検索パス」の下に、次のように追加します。

$(BUILT_PRODUCTS_DIR) 

次に、静的ライブラリを使用するために、次のようにインポートします。

#import "ConversionCalculator/ConversionCalculator.h"

それで、これは昨日までうまくいきました。プロジェクトに新しい静的ライブラリを追加しようとしましたが、うまくいかないようでした。だから私は自分のプロジェクトをきれいにして、もう一度再構築しようとしましたが、今Xcodeは#import "ConversionCalculator/ConversionCalculator.h". それは言う

レキシカルまたはプリプロセッサの問題。「ConversionCalculator/ConversionCalculator.h」ファイルが見つかりませんでした。

これをデバッグするためのヒントがあるかどうか疑問に思っていました。私はこのようなさまざまなチュートリアルを見てきました: http://blog.stevex.net/2012/04/static-libraries-in-xcode/ http://cocoamanifest.net/articles/2011/06/library-management- with-xcode-workspaces.html http://www.raywenderlich.com/41377/creating-a-status-library-in-ios-tutorial

しかし、静的ライブラリにリンクするための「最適な方法」や、Xcode がファイルを見つけられない理由をトラブルシューティングする方法を見つけることができないようです。私のファイル構造は私のマシンで次のように設定されています:

Projects\
   DistanceCalculator\DistanceCalculator.xcodeproj
   ConversionCalculator\ConversionCalculator.xcodeproj
   DistanceCalculator.workspace

私が言ったように、これは Pro iOS 5 Tools book のチュートリアルに従ったときにも機能していました。私のワークスペースが以前に使用したときに ConversionCalculator を見つけられない理由がわかりません。私が難しいと思う部分は、さまざまな記事がヘッダーの検索パスについてさまざまなことを述べていることです。そのフィールドにデータを入力する最良の方法が何であるかはわかりません。何かご意見は?前もって感謝します!

編集:エラーなしでデバイス用にビルドできることを追加します。しかし、iPhone シミュレーターに切り替えると、ファイルが見つからないというエラーが表示されます。また、次の警告が表示されることもわかります。

ConversionCalculator was rejected as an implicit dependency for 'libConversionCalculator.a' because its architectures 'i386' didn't contain all required architectures 'i386 x86_64'

それを見ると、それが何を意味するのかわかりません。私のライブラリがすべてのアーキテクチャ用にビルドされていないことを意味する場合は、上記のリンクの wenderlich の記事に従って、すべてのアーキテクチャ用にビルドするターゲットを作成しようとしました。dervieddata フォルダーに移動すると、デバッグ、リリース、およびユニバーサルが表示され、libConversionCalculator.a ファイルが表示されます。しかし、ワークスペースに戻ってシミュレーター用にプロジェクトを再構築しようとすると、ファイルが見つからないというエラーと暗黙の警告が表示されます。

編集 #2: 推奨ビルド設定へのアップグレードを示す警告フラグが Xcode に表示されました。これでエラーは発生しません。何が起こったのかわかりません...しかし、エラーがないのは良いことだと思います。

4

1 に答える 1

1

iOS での静的ライブラリの使用の概要の「アプリケーションの構成」の章の Xcode のヘルプ トピック「ライブラリに対するリンク」で利用可能な説明に従い ます (Xcode ヘルプ内でも検索できます)。

ただし、常に山かっこを使用してライブラリからヘッダーを含めることをお勧めします。

#import <ConversionCalculator/ConversionCalculator.h>

二重引用符を使用すると、このインポート ディレクティブが記述されているファイルに関連するサブフォルダーで、同じ名前のファイルを誤って検索して見つける可能性があります。どのサブフォルダーにもファイルが存在しない場合にのみ、プリプロセッサーは指定されたヘッダー検索パスで検索を開始します。

山かっこを使用して、プリプロセッサは指定されたヘッダー検索パスのみを即座に検索します。

したがって、実際には対応するライブラリのヘッダーを見つけたいので、常に山かっこを使用してください。

注:静的ライブラリ プロジェクトを作成するための推奨事項に従う場合、ライブラリにリンクするターゲットにヘッダー検索パスを明示的に設定する必要はありません。Xcode は既に検索パスを追加します。

$(BUILT_PRODUCTS_DIR)/includes

ライブラリ ヘッダーは次の場所にあります。

$(BUILT_PRODUCTS_DIR)/includes/<product-name>

これらは、iOS スタティック ライブラリ ターゲットの「ファイルのコピー」フェーズを通じてそこに配置され、デフォルトで「宛先」が「製品ディレクトリ」に設定され、「サブパス」が「includes/${PRODUCT_NAME}」に設定されます。

これらのデフォルト設定を他の合理的で適切な値に変更できます。(そうする場合は、Xcode のデフォルトの検索パスの結果を考慮してください!)

于 2013-09-23T08:45:27.247 に答える