5

我创建了一个使用RMSharedPreferences框架的 Mac 应用程序。打开应用程序时,它立即崩溃,我收到以下错误:

Dyld Error Message:
  Library not loaded: @rpath/RMSharedPreferences.framework/Versions/A/RMSharedPreferences
  Referenced from: /Users/USER/Desktop/MyApp.app/Contents/MacOS/MyApp
  Reason: image not found

好像找不到框架。我尝试将复制文件阶段添加到应该复制框架的目标中,并且在 Finder 中浏览应用程序的内容时,它似乎被正确复制了。

有谁知道可能导致此错误的原因?

编辑:将框架设置为可选确实使应用程序启动时没有任何错误,但应用程序不能完全工作。任何与 RMSharedPreferences 相关的调用都将被忽略。

复制框架。 应用程序的内容。

4

2 回答 2

10

由于您将框架与您的应用程序捆绑在一起,因此您应该设置框架的安装位置。您可以在框架目标构建设置“安装位置”中进行设置。使用类似的东西:

@executable_path

您还可以为您的框架使用单独的文件夹,然后您将使用:

@executable_path/../Frameworks/

如果您无法重建框架(这不是您的,但我说的是一般情况),您可以像这样修改预构建的框架安装路径:

install_name_tool -id @executable_path/../Frameworks/<framework_name> <your_framework>

在这里你可以找到一个参考。

如果您要将一个框架捆绑到另一个框架中,您可以@loader_path使用@executable_path.

于 2013-03-02T12:03:57.677 回答
5

@rpath 是一个更灵活的关键字,建议使用它。

更好的方法是在 Xcode 中设置“运行路径搜索路径”构建设置。

这避免了需要额外的构建阶段脚本来修改框架。

例如,在您的情况下,您可以将“运行路径搜索路径”设置为

@executable_path/../Frameworks

或者

@loader_path/../Frameworks

如果您尝试从框架内加载框架。

于 2013-11-14T14:59:31.130 回答