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 设置运行路径搜索路径以查找我正在使用的所有 .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

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

于 2021-02-03T12:40:24.893 回答