14

我有一个应用程序,调用它Animal.app。在它的Contents/Frameworks文件夹里面是一个框架,比如说Mammal.framework. 在框架的Versions/A/Frameworks文件夹中,我有dog.dylib. 的安装名称dog.dylib是@rpath/dog.dylib。对于"Runpath Search Paths"框架的设置,我已经指定了@loader_path/../Frameworks. (我对最后一个设置的推理是 dylib 的“加载器”将是框架的二进制文件,位于路径Mammal.framework/Versions/A/Mammal。)

我在运行时收到一条错误消息:

Dyld Error Message:
  Library not loaded: @rpath/dog.dylib
  Referenced from: /Volumes/VOLUME/*/Animal.app/Contents/MacOS/../Frameworks/Mammal.framework/Versions/A/Mammal
  Reason: image not found

我已经阅读了 Apple 的“Run-Path Dependent Libraries”文档和 Mike Ash 在 上的博客文章@rpath,但我仍然看不出我做错了什么。

4

1 回答 1

8

事实证明,正确的运行路径搜索路径是@loader_path/Frameworks. 我缺少的是 @loader_path 代表的不是加载器的完整路径,而是该路径减去其最后一个组件。 Mike Ash 的博客文章确实这么说,但我不知何故错过了它。因此,在框架的情况下,@loader_path 以 A 结尾。

于 2012-10-24T21:47:14.760 回答