链接到框架

时间:2012-11-18 23:03:33

标签: macos cocoa frameworks linker dyld

我有很多框架要链接到我的主项目但是出于某种原因,每当我在Xcode外部运行整个程序时,可执行文件根本找不到框架。

框架的动态安装路径设置为@loader_path /../ Frameworks。我试过简单地把@rpath但它也没用。主可执行文件上的Runpath搜索路径为空。

有一种简单的方法可以调试吗?我想我已经浏览了所有关于框架链接的网站和博客文章,并没有任何帮助。

1 个答案:

答案 0 :(得分:2)

例如,如果您有一个构建阶段,您将框架复制到您的应用程序包...

Build Phase example

在您的应用内置构建设置.. 运行路径搜索路径 @executable_path/../Frameworks

在您的框架中构建设置.. 动态库安装名称 @rpath/$(EXECUTABLE_PATH)

(其中宏$(EXECUTABLE_PATH)应扩展为类似AFramework.framework / Versions / A / AFramework)

如果你弄错了,你的应用应该在启动时崩溃。崩溃报告应该说类似

Dyld Error Message:
  Library not loaded: @rpath/TestyFramework.framework/Versions/A/TestyFramework
  Referenced from: /path/to/TestyApp.app/Contents/MacOS/TestyApp
  Reason: image not found

应该可以帮助您确定值应该是什么以及框架应该在哪里

即在我的情况下,完整的运行路径搜索路径是..

/path/to/TestyApp.app/Contents/MacOS/TestyApp/../Frameworks

因此,应该在..

找到图书馆
/path/to/TestyApp.app/Contents/MacOS/TestyApp/../Frameworks/TestyFramework.framework