我想寫一個QuickLook生成器。爲此,我需要鏈接到我創建的框架。但是,只要我對連結上述框架,qlmanage
拒絕告訴我加載我的插件:將框架鏈接到QuickLook插件
[ERROR] Can't load plug-in at /path/to/my-ql.qlgenerator: The bundle 「my-ql」 couldn’t be loaded because it is damaged or missing necessary resources.
我已閱讀所有相關的教程鏈接上,框架和QuickLook的也未找到答案。
事情我已經找到了/排除到目前爲止
- 架構:包括框架爲32位二進制,整個連接過程的故障時,所以這似乎並不成爲問題。
- 我已驗證框架被複制到
Contents/Frameworks
下的插件包中。 - 框架的安裝路徑設置爲
@executable_path/../Frameworks
此外,在其他應用程序使用的框架時,一切順利。我可以解釋的唯一可能的解釋如下:執行qlmanage
時,@executable_path
實際上指向該二進制文件,因此我的框架從未找到。如果是這種情況,我如何設置安裝路徑仍然允許相對於插件的位置?我不想在全球安裝我的框架。
編輯
上內置QuickLook的插件otool -L
產生如下:
/System/Library/Frameworks/QuickLook.framework/Versions/A/QuickLook (compatibility version 1.0.0, current version 327.4.0)
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 38.0.0)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 44.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 550.29.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 15.0.0)
@executable_path/../Frameworks/PESHandler.framework/Versions/A/PESHandler (compatibility version 1.0.0, current version 1.0.0) <== *this is my framework*
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0)
otool -D
我的框架產生這樣的:
@executable_path/../Frameworks/PESHandler.framework/Versions/A/PESHandler
框架不需要垃圾採集。
謝謝。我實際上已經閱讀了一些這些變量(包括'@ loader_path'和'@ rpath'),但沒有多少考慮。 – 2011-04-29 09:33:37
..按照http://www.dribin.org/dave/blog/archives/2009/11/15/rpath/建議切換到「@ rpath」 – Jay 2017-05-02 07:42:37