私はサードパーティのライブラリを使用しています.たとえば、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をロードしませんか?
提案してください。私はここで無知です。よろしくお願いします:)