找不到dlopen()错误图像

时间:2011-07-15 18:58:43

标签: dylib dlopen dynamic-library

我有软件首先加载.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中的所有路径也显示正确。

在此先感谢,我已经坚持了好几天。

3 个答案:

答案 0 :(得分:3)

我最终使用-install_name将我所有库的安装名称更改为@ rpath / dylibName.dylib,然后在Xcode中使用@loader_path设置Runpath搜索路径以查找我正在使用的所有.dylib。 / p>

答案 1 :(得分:1)

我认为解决此错误的更简单方法是恢复到没有收到此错误的较早版本。右键单击项目文件夹并导航到本地历史记录以恢复到早期版本。我证实这是在 Mac OS Big sur 上安装的 android studio 上工作的。

答案 2 :(得分:0)

使用:

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

然后检查:

otool -D mylib.dylib