2013-03-02 118 views
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相关的调用都将被忽略。

Copy framework. Contents of app.

回答

10

因为要捆绑你的应用程序的框架,您应该设置框架的安装位置。您可以在您的框架目标构建设置“安装位置”中进行设置。使用类似:

@executable_path 

你也可以用你的框架,一个单独的文件夹,那么你可以使用:

@executable_path/../Frameworks/ 

如果您不能重建框架(这是不是你的,但我一般说),你可以修改这样的预建框架的安装路径:

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

Here you can find a reference for this.

如果打算在另一个框架中捆绑框架,则可以使用@loader_path而不是@executable_path

+0

这是一个很好的答案。将安装位置设置为“@executable_path /../ Frameworks”解决了问题。非常感谢您的答复和参考Apple文档。 – simonbs 2013-03-02 12:14:40

+0

很高兴帮助! – sergio 2013-03-02 12:37:53

4

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

更好的方法是在Xcode中设置“Runpath Search Paths”构建设置。

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

例如,在你的情况,你可以,如果你想从一个框架内加载框架集“运行路径搜索路径”,以

@executable_path/../Frameworks 

@loader_path/../Frameworks 

+1

您的意思是“连接会话的建立设置”下的“Runpath Search Path”? – ingaham 2014-12-15 16:13:23

+0

是的,抱歉。谢谢。 – 2015-01-06 14:14:19

相关问题