0

我的 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 的建议/意见表示赞赏。谢谢。

4

1 回答 1

0

我通过使用 install_name_tool 将 rpath 路径名添加到 QtCore 来解决此问题:

install_name_tool -add_rpath @loader_path/../../.. QtCore.framework/Versions/4/QtCore
于 2011-10-19T13:56:47.730 回答