我的 Mac OS X 插件包括一些使用 Qt 的框架。这些框架使用 Qt 的 jpeg 插件 dylib 创建了一个显示 jpeg 的 UI。
我使用 install_name_tool@rpath
在我的插件中进行设置,以便它可以位于任何地方。宿主应用程序可以很好地找到并加载我的框架,但是 Qt jpeg 插件 dylib 不会在运行时加载。
Qt jpeg 插件的 id 是:
@rpath/qt/plugins/imageformats/libqjpeg.dylib
其依赖的Qt共享库列表为:
@rpath/QtGui.framework/Versions/4/QtGui
@rpath/QtCore.framework/Versions/4/QtCore
当我将 QT_DEBUG_PLUGINS 设置为 1 时,控制台的输出为:
QFactoryLoader::QFactoryLoader() looking at "/Users/Robin/MyPlugin.plugin/Contents/Frameworks/qt/plugins/imageformats/libqjpeg.dylib"
"Cannot load library /Users/Robin/MyPlugin.plugin/Contents/Frameworks/qt/plugins/imageformats/libqjpeg.dylib: "
not a plugin`
如果我@rpath
用硬编码位置替换依赖库列表,一切正常,但我的插件不能位于任何地方。
这个问题似乎出在雪豹身上,而不是狮子身上。我正在使用 Qt 4.6.3。
任何关于我如何成功加载 libqjpeg 的建议/意见表示赞赏。谢谢。