Bir QuickLook jeneratörü yazmaya çalışıyorum. Bunun için yarattığım bir çerçeveye bağlanmam gerekiyor. Ancak, en kısa sürede karşı bağlamak olarak çerçeve, qlmanage
söyleyerek kalbimizi eklenti yüklemek reddeder ki: Ben, çerçeveleri ve QuickLook'u Bağlama ilgili tüm öğreticiler okumak ama hiçbir cevap buldukÇerçeveleri QuickLook eklentilerine bağlama
[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.
. Ben öğrendim
şeyler/şimdiye kadar
- Architecture dışladı: 32 bit, ikili tüm bağlantı oluşturma sürecinde hatalar olarak Framework dahil, bu nedenle bu sorun görünmüyor zaman.
- Çerçevenin eklentinin paketine
Contents/Frameworks
altında kopyalandığını doğruladım. - çerçevenin yüklemek yolu başka bir uygulamada çerçeve kullanırken Ayrıca, her şey iyi gider
@executable_path/../Frameworks
olarak ayarlanır. Ben mümkün olabilir olası açıklama aşağıdaki gibidir: qlmanage
yürütürken, @executable_path
aslında bu ikili işaret eder ve benim çerçevem asla bulunmaz. Bu durumda, eklentiye göre bir konuma izin vermek için yükleme yolunu nasıl ayarlamalıyım? Çerçevemi global olarak kurmak istemiyorum. inşa QuickLook'u Plugin üzerinde DÜZENLEME
otool -L
şu sonuçları verir: Benim çerçeve üzerinde
/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
verir bu:
@executable_path/../Frameworks/PESHandler.framework/Versions/A/PESHandler
Çerçeve çöp gerektirmez Toplamak.
Teşekkür ederim. Bu değişkenlerden bazılarını ('@ loader_path' ve' @ rpath' dahil) okumuştum ama çok düşünmedim. –
.. http://www.dribin.org/dave/blog/archives/2009/11/15/rpath/ adresinde önerildiği gibi "@ rpath" a geçin. – Jay