我有许多框架链接到我的主项目,但由于某种原因,每当我在 Xcode 之外运行整个东西时,可执行文件根本找不到框架。
框架将动态安装路径设置为@loader_path/../Frameworks。我试过简单地放@rpath,但也没有用。主可执行文件上的 Runpath Search Paths 为空。
有没有一种简单的方法来调试这个?我想我已经浏览了所有关于框架链接的网站和博客文章,但没有任何帮助。
我有许多框架链接到我的主项目,但由于某种原因,每当我在 Xcode 之外运行整个东西时,可执行文件根本找不到框架。
框架将动态安装路径设置为@loader_path/../Frameworks。我试过简单地放@rpath,但也没有用。主可执行文件上的 Runpath Search Paths 为空。
有没有一种简单的方法来调试这个?我想我已经浏览了所有关于框架链接的网站和博客文章,但没有任何帮助。
例如,如果您有一个构建阶段,您可以将框架复制到您的应用程序包中……</p>
在您的应用程序中构建设置..
运行路径搜索路径 @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