0

オープンソースの電子メールクライアントにpdfアノテーションデモライブラリ(つまり、ソースコードを調べることはできません。フレームワークバイナリのみを使用できます)を含めたかったのです。問題は、電子メールクライアントが非ARCコードであったのに対し、pdfバイナリライブラリはそうであったことでした。通常の修正は、単純にとリンカーフラグを使用してそれを回避することです。-ObjC-fobjc-arc

問題は、pdfバイナリの作成者がライブラリの周りにいくつかのARCラッパーコードをリリースしたことでした。これは私が使用するのにまだ重要です。そこで私がしたことは、xcodeプロジェクトを作成したことです。ラッパーコードをその中に挿入して作成しました。ラッパーコードはバイナリライブラリを使用します。次に、静的ライブラリとしてラッパーコードを含めました。

それから私はエラーを受け取り始めました ..symbol(s) not found for architecture i386エラーはラッパーライブラリがpdfフレームワークバイナリで定義されたオブジェクトを見つけることができないことに関するものでした。

同じコードをiPhoneでテストしたところsymbol(s) not found for architecture ARM、ファイルアーキテクチャの問題ではないことがわかりました。また、ラッパーライブラリを単独でコンパイルすると、問題なく動作することもわかりました。

多くの髪の毛を引き裂き、壁を打ち抜いた後、pdfバイナリを親プロジェクト(およびラッパーの静的ライブラリ)に含めるだけで、物事は魅力のように機能することがわかりました。なぜこれが必要なのですか?ラッパーの静的ライブラリはスタンドアロンである必要があると思いました(親プロジェクトの一部としてコンパイルしたときに、それ自体で正常にコンパイルできるのに、含まれているフレームワークでオブジェクトを見つけることができないのはなぜですか)?

4

1 に答える 1

0

ライブラリの作成者は、私のソリューションは機能しましたが、問題が発生したことを指摘しました。これを行う最も簡単な方法は、プロジェクトにARCファイルを含め、ビルドで-fobjc-arcタグを個別にタグ付けすることです。フェーズ>ソースのコンパイル

ここに画像の説明を入力してください

于 2013-01-16T13:38:59.247 に答える