【发布时间】:2013-05-02 09:17:59
【问题描述】:
我已经构建了一个基于 OS X FUSE 的应用程序(即我有自己的基于 OS X FUSE 的文件系统)。 安装 OSXFUSE 后,我当然可以包含 /Library/Frameworks 中的 OSXFUSE.framework。 但是,当我分发应用程序时,我不能指望用户已经安装了它,所以我尝试将框架包含在包中,如下所示:
- 将框架从 /Library/Frameworks 拖到我的项目中
- 创建了一个新的 Copy Files 构建阶段(使用目标框架)
- 将框架添加到该复制构建阶段
但是,当我在没有安装 FUSE 的系统上运行它时,我得到一个错误:
dyld:库未加载:/Library/Frameworks/OSXFUSE.framework/Versions/A/OSXFUSE 引用自:/Users/me/Library/Developer/Xcode/DerivedData/
副本构建阶段不应该阻止这种情况吗?我在这里错过了什么?
【问题讨论】:
-
首先要检查的当然是框架是否真的被复制到了应用程序包中。您是否尝试在应用程序包的查找器中使用“显示包内容”?或者,
cd从终端进入捆绑包。接下来,您可能仍然需要正确设置 dyld 链接路径(因为我接触到这个已经有一段时间了)。请参阅我的近距离投票评论。 -
是的,框架实际上被复制到了应用程序包(到 Frameworks 文件夹)。我阅读了您的链接问题,并将
@loader_path/../Frameworks添加到Runpath Search Path,但这没有任何效果...... -
引用的手册页实际上建议使用
@executable_path如果要从应用程序包(而不是插件包)加载。我了解到您正在构建一个应用程序,而不是一个插件? -
我也试过
@executable_path/../Frameworks,但这也不起作用。我也有点困惑。我过去使用过各种 3rd 方框架(如 sparkle、dropbox 等),将它们添加到复制文件构建阶段总是足够的。我从来不需要更改任何框架搜索路径。这个 OSXFUSE 框架有什么特别之处?
标签: xcode cocoa frameworks fuse