无法在Mac OS X插件中加载Qt jpeg插件 - @rpath

时间:2011-10-18 09:55:30

标签: macos qt dyld

我的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时,Console的输出为:

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,一切正常,但我的插件无法在任何地方找到。

这个问题似乎出现在Snow Leopard上,但不是Lion。我正在使用Qt 4.6.3。

有关如何成功加载libqjpeg的任何建议/意见。感谢。

1 个答案:

答案 0 :(得分:0)

我通过使用install_name_tool:

向QtCore添加rpath路径名来修复此问题
install_name_tool -add_rpath @loader_path/../../.. QtCore.framework/Versions/4/QtCore