0

作成したライブラリがあり、アプリケーションで利用したいと考えています。私はライブラリに適切にリンクしたと信じています。ここに私がやったことすべてがあります:

  • ヘッダー検索パスを設定する
  • 他のリンカー フラグを「-ObjC」に設定します。
  • 静的ライブラリ xcode プロジェクトを追加しました
  • lib.a がフレームワーク ターゲットとしてリストされていることを確認しました。
  • ライブラリを直接の依存関係として追加

タイトルで述べたように、シミュレーターで静的ライブラリを使用してアプリを正常に実行しました。デバイスを使用してアプリをテストしようとすると、ライブラリの関数を使用する必要がある 2 番目にクラッシュします。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSDate firstOfCurrentMonth]: unrecognized selector sent to class 0x3841bb44'
2009-10-10 12:45:31.159 Basement[2372:207] Stack:
4

2 に答える 2

2

これは、現在の SDK リンカのバグによるものです。この問題と考えられる回避策の詳細については、この投稿を参照してください。(この投稿も参照してください。)

アップデート:

別の方法として、静的ライブラリを削除し、ライブラリのソース ファイルをアプリケーションのプロジェクトに直接含めることもできます。私は同様の静的ライブラリのリンクの問題に直面していましたが、それを正常に実行するために戻ってきました。それが機能する場合(回避策がどれほどひどいものであっても)、それは間違いなくリンカーの問題です。

于 2009-10-10T16:54:01.467 に答える
0

最近この問題に遭遇しました。-all_load を機能させることができませんでしたが、別のカテゴリで DID が機能していることに気付きました。私はこのカテゴリを怠っていたので、別のファイルに含めました。

最終的にダミー クラス (メソッド、インスタンス変数なし) を作成し、そのダミー クラスの .m ファイルにカテゴリの実装を含めました。これを行った後、 -all_load フラグを削除した後でも、カテゴリが機能し始めました。

これは iPhone OS 3.1.3 でした。

これは確かに正しい修正方法ではありませんが、うまくいったようです。

完全なサンプル コードは、私の (些細な) カテゴリのブログにあります。

于 2010-03-24T04:52:18.840 に答える