我的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的任何建议/意见。感谢。
答案 0 :(得分:0)
我通过使用install_name_tool:
向QtCore添加rpath路径名来修复此问题install_name_tool -add_rpath @loader_path/../../.. QtCore.framework/Versions/4/QtCore