我刚刚发现了使用 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。这是这样做的正确方法吗?