无法在 Mac OS X 插件中加载 Qt jpeg 插件 - @rpath
我的 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
替换为硬编码位置,一切正常,但我的插件无法位于任何地方。
这个问题似乎出现在 Snow Leopard 上,但不是 Lion。我正在使用 Qt 4.6.3。
任何有关我如何成功加载 libqjpeg 的建议/意见都表示赞赏。谢谢。
My Mac OS X plugin includes some frameworks that use Qt. These frameworks create a UI that displays jpegs using Qt's jpeg plugin dylib.
I use install_name_tool to set @rpath
in my plugin so that it can be located anywhere. The host application finds and loads my frameworks fine, but the Qt jpeg plugin dylib won't then load at runtime.
The Qt jpeg plugin's id is:
@rpath/qt/plugins/imageformats/libqjpeg.dylib
Its dependent Qt shared library list is:
@rpath/QtGui.framework/Versions/4/QtGui
@rpath/QtCore.framework/Versions/4/QtCore
When I set QT_DEBUG_PLUGINS to 1, the output from Console is:
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`
If I replace @rpath
in the list of dependent libraries with hardcoded locations, everything works fine, but my plugin can't then be located anywhere.
This problem appears to be on Snow Leopard, but not Lion. I'm using Qt 4.6.3.
Any suggestions / advice appreciated on how I get libqjpeg loading successfully. Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我通过使用 install_name_tool 将 rpath 路径名添加到 QtCore 来修复此问题:
I fixed this by adding an rpath path name to QtCore using install_name_tool: