2013-03-02 156 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

相關問題