我有一個應用程序,稱之爲Animal.app
。其Contents/Frameworks
文件夾內有一個框架,比如Mammal.framework
。並且在框架的Versions/A/Frameworks
文件夾中,我有dog.dylib
。安裝名稱dog.dylib
是@ rpath/dog.dylib。對於框架的"Runpath Search Paths"
設置,我已指定@loader_path/../Frameworks
。 (我爲這最後的設置理由是,該dylib的「裝載機」將是框架的二進制文件,在路徑Mammal.framework/Versions/A/Mammal
)。@rpath嵌入在框架中的動態庫
我在運行時得到一個錯誤信息:
Dyld Error Message:
Library not loaded: @rpath/dog.dylib
Referenced from: /Volumes/VOLUME/*/Animal.app/Contents/MacOS/../Frameworks/Mammal.framework/Versions/A/Mammal
Reason: image not found
我已經閱讀了Apple的「Run-Path Dependent Libraries」文檔,Mike Ash的博客文章@rpath
,但我仍然看不出我做錯了什麼。
結尾是的,要清楚:嵌套的dylib及其父框架的安裝目錄應爲「@rpath」。然後,父框架在其運行路徑搜索路徑中包含「@ loader_path/Frameworks」(因爲dylib最終成爲Frameworks文件夾的同級);使用此框架的應用程序包含「@loader_path /../ Frameworks」(由於可執行文件在MacOS中關閉)。該應用程序也可以使用'@ executable_path',但'@ loader_path'看起來更酷:-) – natevw
我不明白你實際做了什麼使它工作...像我一樣向我解釋它6. –
@ Prof.Falken:在框架的構建設置中,在鏈接下,有一個名爲「運行路徑搜索路徑」的設置。我將它的值設置爲'@ loader_path/Frameworks'。 – JWWalker