Estoy intentando escribir un generador QuickLook. Para esto, necesito vincularme con un marco que creé. Sin embargo, tan pronto como me enlace contra dicho marco, qlmanage
se niega a cargar mi complemento diciéndome:Vinculación de marcos en los complementos de 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.
He leído todos los tutoriales relevantes sobre la vinculación, los marcos y QuickLook pero no encontró respuesta.
cosas que he descubierto/descartado hasta ahora
- Arquitectura: cuando se incluye el Marco como binario de 32 bits, la totalidad de los errores del proceso de vinculación, por lo que este no parece ser el problema.
- He verificado que el Framework se copia en el paquete del complemento bajo
Contents/Frameworks
. - ruta de instalación del marco se establece en
@executable_path/../Frameworks
Además, al utilizar el marco de otra aplicación, todo va bien. La única explicación posible que puedo comprender es la siguiente: Al ejecutar qlmanage
, el @executable_path
en realidad apunta a ese binario y, por lo tanto, mi marco de trabajo nunca se encuentra. Si este es el caso, ¿cómo debo configurar la ruta de instalación para que aún permita una ubicación relativa al complemento? No quiero instalar mi marco globalmente.
EDITAR
otool -L
en la construcción QuickLook Plugin se obtiene la siguiente:
/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
en mi marco produce esto:
@executable_path/../Frameworks/PESHandler.framework/Versions/A/PESHandler
El Marco no requiere basura colección.
Gracias. De hecho, había leído sobre algunas de esas variables (incluyendo '@ loader_path' y' @ rpath') pero no le di mucha importancia. –
... idealmente cambie a '@ rpath' como también lo sugiere http://www.dribin.org/dave/blog/archives/2009/11/15/rpath/ – Jay