2009-10-25 87 views
21

我是XCode新手。我正在嘗試關注these instructions。顯然我錯過了一些東西,因爲雖然我可以看到我想要的框架已被複制到應用程序包中,但我無法引用它。XCode中的應用程序包框架

當我比我的其他機器啓動的應用程序(或者,如果我從/庫/框架/刪除OpenCV的),我收到以下錯誤:

Dyld Error Message: Library not loaded: /Users/david/Library/Frameworks/OpenCV.framework/Versions/A/OpenCV Referenced from: /Users/g/Demo/Slates/ClipSplitter/build/Release/ClipSplitter.app/Contents/MacOS/ClipSplitter Reason: image not found

沒有用戶「大衛」在我係統,如果這有什麼區別。這也是從互聯網下載的預構建的OpenCV。 (Here’s a screenshot of the project按照註釋中的要求。)

+0

它在應用程序包內部的位置? – 2009-10-25 17:43:25

+0

內容/框架/ OpenCV。框架 – 2009-10-25 18:00:21

+0

我會說你的項目窗口的屏幕截圖與相關的目標完全展開。 – 2009-10-25 19:36:28

回答

29

當OpenCV.framework被構建時,它已被配置爲使用/Users/david/Library/Frameworks/的安裝路徑。

由於您想將該庫用作私有框架(安裝在應用程序包裝中的ClipSplitter.app/Contents/Frameworks/OpenCV.framework),因此您必須更改其安裝路徑。這可以使用終端容易地完成如下:

$ install_name_tool -id @executable_path/../Frameworks/OpenCV.framework/OpenCV <your_path>/OpenCV.framework/OpenCV 

當然,你必須調整最後一個參數的路徑。

現在,當鏈接您的應用程序時,您的修改後的框架會告訴鏈接程序dyld必須在應用程序的應用程序包裝中(在ClipSplitter.app/Contents/Frameworks目錄中)搜索OpenCV.framework。

現在您必須將OpenCV.framework複製到您的應用程序包裝中。通過添加複製文件構建階段,您可以將其作爲構建過程的一部分:右鍵單擊目標,選擇添加 - >新建構造階段 - >新建複製文件構建階段。從彈出的「目標」中選擇「框架」並關閉對話框。

您的目標現在將包含一個新階段,您可以通過從Xcode窗口左側的Project Navigator拖動圖標來添加OpenCV.framework。請注意,Xcode不允許你使用'+'按鈕添加文件夾到複製文件階段,所以爲了複製框架,你必須拖動&。

+2

這幾乎完全正確。我實際上必須運行的命令是:$ install_name_tool -id @executable_path /../ Frameworks/OpenCV.framework/OpenCV /OpenCV.framework/OpenCV但這足以讓我到那裏。謝謝!!!! – 2009-11-01 15:36:02

+0

哎呀,對。如果你不嘗試你正在輸入的內容,會發生這種情況。對困惑感到抱歉。 – 2009-11-01 16:23:56

+0

如果您將多個框架安裝到安裝路徑_that依賴於each_,雖然這不起作用。您還需要在xcode應用程序中設置運行路徑搜索路徑,以便在@loader_path /../ Frameworks中進行搜索。 我發現這個解釋真的很有幫助:http://www.dribin.org/dave/blog/archives/2009/11/15/rpath/ – NHDaly 2013-08-03 04:21:43

6

你需要構建設置「安裝目錄」設置爲@executable_path/../Frameworks

看到有關https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPFrameworks/Tasks/CreatingFrameworks.html

問候

+3

您至少應該提到,在構建框架時必須應用此設置,而不是鏈接框架的應用程序。 – 2009-10-31 20:44:36

+0

是的,我確定這是一個很好的建議,除非我沒有構建OpenCV框架,我下載了它。 – 2009-11-01 15:38:12

+1

我錯過了最後一句話,尼古拉的答案在這種情況下更合適。不過,我不確定爲什麼寧願花時間修復破解的預構建開源庫,而不是正確構建它們。 – 2009-11-02 11:41:52

2

使用嵌入在你的應用程序中捆綁私人框架的Xcode 5章,你可以使用應用程序目標的Build Phases面板來促進此操作。

該面板的默認外觀是

按下下方複製文件的「+」按鈕,您可以添加框架,將在您的應用程序包被複制到框架文件。

現在,當您構建時,您的框架將被複制到您的包中。

+1

圖像已死。重新上傳? – pkamb 2016-09-12 22:59:49