2011-06-01 12 views
0

私は既存のiPhoneアプリケーションを持っていて、別のテストアプリケーション(ワークスペース内)で使用できるように、コードから静的ライブラリを作成したかっただけです。アプリケーションは正常にコンパイルしますが、私は(同じコードファイルを持つ)ライブラリのバージョンをコンパイルしようとすると、私は次のエラーを取得する:XCode 4を使用してiPhoneプロジェクト用の静的ライブラリを構築すると、なぜこのエラーが発生しますか?

  • 字句やプリプロセッサの問題 - 「MyClass.h」ファイルが
が見つかりません

しかし、このエラーがあっても、アプリケーションはまだ実行されます。実際、アプリケーション(静的ライブラリを使用する)をコンパイルすると、最初はエラーは表示されず、1〜2秒後に上記のエラーが表示されます。

私は基本的にやってる:

  1. はココタッチ静的ライブラリ
  2. は「ソースをコンパイル」
  3. 追加のターゲットでの.mファイルを追加使用して、プロジェクトの新しいターゲットを作成します。ターゲット内の "ファイルをコピーする"
  4. "ライブラリを含むリンクバイナリ"に同じライブラリセットを追加
  5. プロファイルに移動して、ターゲットをRELEASE
  6. に変更しました

私はここに一歩も欠けていますか?

+3

実際のエラーを記載してください。そうでなければ何が起こっているのかを正確に伝えるのは難しいです。あなたはあなたの実装ファイルに必要なすべてのヘッダーを#importしていますか? – jtbandes

+0

私はjtbandesに同意する必要があります、私たちはあなたを助けるために、より多くの情報が必要です。 – Jonah

+0

よく質問を更新しました。うまくいけば、これはもう少し具体的になります – Greg

答えて

2

この問題は、 "Other Link Flags"オプションで "-ObjC"オプションが設定されていることが判明しました。必要 - Dereksのアドバイスをよく読んでコンパイルログを確認しました

+0

xcode 6の助けになりませんでしたか? – user1010819

4

私はこれでスタブを持っています:-)私は、MyClass.hがプライベートに設定されている可能性があると思います。したがって、静的ライブラリを作成するときにヘッダディレクトリに追加されません。出力ヘッダーディレクトリをチェックすることで、そうであるかどうかを確認する必要があります。ヘッダーファイルが見つからない場合、それは何が起こっているかをかなり確信しています。

第2に、なぜテスト用に別個のアプリケーションを使用するので、なぜ静的ライブラリを構築する必要があるのですか?私はGHUnitでユニットテストをするいくつかの静的ライブラリとアプリケーションを持っています。私は単に新しいアプリターゲットを追加し、GHUnit iOSアプリを実行するように設定するだけです。別のプロジェクトを作成することなく、テストするクラスとOCMockなどのテストフレームワークを追加できます。基本的には、あなたのテスト方法のように聞こえるかもしれません。 :-)

+0

実際にDerekはどこで出力ヘッダディレクトリを探しますか?私はFinderを見ていると私には分かりません...背景については、すでにいくつかのユニットテストがありますが、メモリリークの問題があり、選択したライブラリ関数に対してInstrumentsを実行する方法が必要でした。 – Greg

+0

ええ、私の前に私のMacを持っていないが、ヘッダーがコピーされる場所を設定するビルド設定があります。また、ヘッダーファイルを選択すると、XCodeにはそれが属するターゲットが表示され、その隣にはプライベート、プロテクト、パブリックのプルダウンがあります。デフォルトでは、ヘッダーは非公開に設定し、ライブラリーのユーザーが使用できるようにするヘッダーを変更する必要があります。ああ、別の方法は、各ステップで使用される実際のコマンドラインを表示するためにコンパイルログ行を展開することです。 – drekka

+0

Derekに感謝 - アドバイスをいただいたところ、問題が見つかりました - 回答として投稿しました - 助けてくれてありがとうございます – Greg

関連する問題