8

最初に.dylibをロードするソフトウェアがあり、次のコマンドを使用してlibFirst.dylibを呼び出すことができます。

void* handle = dlopen(path.c_str(), RTLD_LAZY | RTLD_GLOBAL);

後で、ロードされたlibFirst.dylibから関数内で、同じコマンドを使用して別の.dylibをロードしようとしますが、libSecond.dylibの場合、この共有ライブラリをロードすると、Xcodeコンソールに次の警告が表示されます。

error warning: Ignored unknown object module at 0x129310 with type 0x8a8399

dlerror: dlopen(/path/libSecond.dylib, 9): Library not loaded: libFirst.dylib
  Referenced from: /path/libSecond.dylib
  Reason: image not found

私が得られないのは、libFirst.dylibがロードされていないということですが、現在libFirst.dylibの関数内にいるので、どうすればよいでしょうか。

DYLD_LIBRARY_PATHのすべてのパスも正しいように見えます。

事前のおかげで、私はこれに何日も立ち往生しています。

4

3 に答える 3

4

最終的に-install_nameを使用してすべてのライブラリのインストール名を@rpath/ dylibName.dylibに変更し、Xcodeで@loader_pathを使用してRunpath Searchパスを設定し、使用していたすべての.dylibを検索しました。

于 2011-07-22T16:32:57.403 に答える
1

使用する:

install_name_tool -id @executable_path/../Frameworks/mylib.dylib mylib.dylib

次に、次のように確認します。

otool -D mylib.dylib
于 2018-05-20T23:07:42.193 に答える
1

このエラーを回避する簡単な方法は、このエラーが発生していなかった以前のバージョンに戻すことだと思います。プロジェクトフォルダを右クリックし、ローカル履歴に移動して、以前のバージョンに戻します。これがMacOSBigsurにインストールされているAndroidStudioで動作することを確認しました。

于 2021-02-03T12:40:24.893 に答える