1

我刚刚发现了使用 dlopen 加载 .dylib 文件的 @rpath,并且需要一些帮助来理解它们。我在 OSX 机器上使用 Xcode 3.2.5。

我有几个 .dylib 调用其他 .dylib,它们也互相调用。@rpath 似乎适用于加载的初始 .dylib,但是一旦我使用另一个 .dylib 进行 dlopen 调用,该 .dylib 使用先前使用 @rpath 找到并加载的第一个 .dyblib 文件,dlopen 将失败,说它可以'找不到原始的.dylib。

@rpath 是否仅适用于与 dlopen 一起使用的文件,还是也用于解决正在打开的 dylib 文件内部的依赖关系?

更新:

我的进一步发现导致我使用 install_name_tools 来更改相互依赖关系以拥有它们的@rpath。这是这样做的正确方法吗?

4

1 回答 1

1

经过几天的研究和反复试验,我发现我需要在我的所有 .dylib 上执行 -install_name ,并使用 @rpath/dylibName.dylib 作为我打算使用相对路径查找的所有库的安装名称。

于 2011-07-21T07:13:30.877 回答