我想写一个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