8

静的ライブラリにカテゴリがあります。アプリケーション開発者は、静的ライブラリを適切に使用するために、-ObjCフラグを「その他のリンカーフラグ」に設定する必要があります。iPhoneデバイス/iPhoneSimulator2.xおよびiPhoneSimulator3.0では正常に動作します。ただし、iPhoneデバイス3.0ではクラッシュします。この記事に書かれているように、これは新しいリンカーのバグです。彼らはもう1つのリンカーフラグ-all_loadを使用することを提案しています。しかし、このフラグを追加すると、シンボルが重複しているため、ビルドも失敗します。

iPhoneデバイス3.0の静的ライブラリでカテゴリを使用するにはどうすればよいですか?助言がありますか?

4

4 に答える 4

10

Core Plot フレームワーク内で同じ問題(3.0 では、 -ObjCはカテゴリにリンクしなくなりました) に遭遇しました。私が言えることは、ターゲット アプリケーション内の Other Linker Flags に -all_load オプションを追加することができ、それによって実行時エラーが解消されたということだけです。シンボルの重複に関する警告は表示されませんでした。

他の人が持っていると確信しているように、リンカーの動作に関するバグレポートを提出しました。

于 2009-07-18T19:39:15.197 に答える
1

ハックで別のバグを修正しようとしたことによって引き起こされたバグです。カテゴリバグの-all_load修正は、完全なハックです。

詳細については、こちらをご覧ください。

于 2010-06-17T20:50:49.937 に答える
0

同じ「重複シンボル」の問題に遭遇しました。フラグがない場合、-all_loadライブラリがリンクされているすべてのライブラリもアプリ リンク行に含める必要がありました。これらをアプリリンク行から削除すると、問題が解決しました。

于 2009-12-19T22:46:27.813 に答える
0

-all_load を他のリンカー フラグに追加する場合は、ライブラリが使用するすべてのフレームワークがターゲット アプリにリンクされていることを確認してください。そうしないと、コンパイルに失敗します。私の場合、MKMapView のカテゴリがあり、MapKit フレームワークをターゲット アプリにバインドしなかったため、ビルド時にカテゴリが属するクラスが見つかりませんでした。

于 2009-12-17T16:02:31.500 に答える