1

私はサードパーティのライブラリを使用しています.たとえば、libABC.dylib

私はオープン ソース アプリケーションで dylib を使用したいと考えています。することについて

$ otool -L libABC.dylib
libABC.dylib:
    libABC.dylib (compatibility version 1.0.0, current version 1.0.0)
    libXYZ.dylib (compatibility version 0.0.0, current version 0.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version
111.1.5)

今、私は自分のアプリでdylibを出荷し、iPhone 4にインストールしたいと考えています。そのために、dylibパスを次のように変更しました

$ install_name_tool -id    @executable_path/../Frameworks/libABC.dylib   libABC.dylib

また、Xcode のプロジェクト配下の Frameworks に libABC.dylib を追加しました。

これにより、内部の dylib パスが次のように変更されます。

$ otool -L libABC.dylib
libABC.dylib:
    @executable_path/../Frameworks/libABC.dylib (compatibility version
1.0.0, current version 1.0.0)
    libXYZ.dylib (compatibility version 0.0.0, current version 0.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version
111.1.5)

問題は、libABC がアプリの起動時に読み込まれることです。このパスを (アプリ バンドル内の) macho-o バイナリに相対的なパスに変更できないため、アプリの読み込みに失敗しています。

Dyld Error Message:
  dyld: Library not loaded: /usr/local/lib/libABC.dylib
  Referenced from:
  ....
  Reason: image not found

方向性を教えてください。サードパーティのライブラリはdylibのみを作成しており、静的ライブラリは作成していません

「@executable_path」からdylibを取得するようにXCodeオプションを設定しようとしましたが、うまくいきませんでした。コードを介してdylibをロードしませんか?

提案してください。私はここで無知です。よろしくお願いします:)

4

2 に答える 2

2

残念ながらいいえ、あなたは運が悪いので、代わりを探し始めてください. カスタム/サードパーティの dylib を iOS プロジェクトに追加することはできません。iOS プロジェクトは、組み込みの動的ライブラリの追加のみをサポートします。さらに、dylib を追加しようとして成功すると、アプリが Apple から拒否される可能性があります。

なんで?詳細な議論については、この投稿をご覧ください。特に、マークされた回答に対する2番目のコメント。

于 2012-12-26T14:24:13.800 に答える
0

@Adil Soomro のリファレンスで読むことができるように、セキュリティ上の理由から、サードパーティのフレームワークはサポートされていません。そのため、アプリをビルドしようとすると、ログ内に表示されるすべてのフレームワークを削除する必要があります。通常、これらのフレームワークが含まれていない場合は機能するはずです。ビルド中にデバッガーがオンになる場合は、アプリがインストールされるまで再生を押す必要があります。

ただし、アプリのレビュー時に拒否されないように、使用しているフレームワークの種類を常に確認してください。

さらに、iOS 5.1 以下でアプリを起動し、一部のフレームワークがこれらの OS バージョンでサポートされていない場合、関連するエラー メソッドが発生する可能性があります。

于 2013-09-06T09:56:47.910 に答える