Qt Jambi版本兼容性

3
我打算使用Qt Jambi在Java中编写Qt GUI。我已经在我的Linux操作系统上安装了最新的Qt库,目前版本为4.7.4。但是下载页上只有Qt Jambi 4.7.0可用。现在,当我运行我的Qt应用程序时,会出现以下错误:
Cannot mix incompatible Qt library (version 0x40704) with this library (version 0x40700)

看起来没有最新的Qt Jambi版本。这是因为它已经不再得到官方支持吗?
作为解决方案,可以从源代码构建,但我想知道它是否与安装的Qt版本兼容。
现在我能否以某种方式混合这些版本,尽管出现错误消息?如果不能,那么如何实现匹配的版本号?据我所知,Jambi仅作为Ubuntu的二进制软件包提供,在其他Linux平台上必须随应用程序jar一起部署(作为固定版本)。

4
你可以尝试提取原生jar包并使用chrpath来删除这些库中的rpaths和runpaths,然后使用LD_LIBRARY_PATH针对包含所有这些库的目录运行。那些较旧的版本通常会捆绑具有rpaths设置的库,因此如果系统上已经存在Qt,它们将无法正常工作。 - Smar
你用的是哪个发行版?我猜不是Ubuntu,因为Ubuntu的软件包不可用? - Smar
你说得对,如果我从本地库中删除rpaths并设置LD_LIBRARY_PATH运行应用程序,它就可以工作。但是使用-Djava.library.path会导致相同的错误消息。你所说的“旧版本”是指Qt Jambi的以下版本不会有这个问题吗?Linux只有4.7.0这一个可用版本,也许Ubuntu的软件包更新一些。回答你的问题,我正在使用ArchLinux。 - foowtf
抱歉,目前还没有新的发布,我们会尽力在接下来的几个月内发布一些。 - Smar
你能详细说明一下吗?我在qtjambi-linux64-gcc.4.7.0.jar中对所有本地库使用了chrpath -d,但它并没有解决问题。问题是我可以运行一些qt示例,但例如媒体播放器就无法工作。 - pzo
1个回答

1
作为一个社区驱动的分支,Qt-Jambi 在开发上略显落后于官方Qt。
Qt-Jambi 应该预装了正确的 Qt 库,但似乎您的应用程序正在引用已在系统上安装的最新的 Qt 库。不同版本无法混合使用,因此您需要引用相同版本的 Qt 二进制文件。
如果您在构建环境中没有显式引用新版Qt库,则应修改LD_LIBRARY_PATH环境变量以包含具有正确库的路径。

1
或者使用-Djava.library.path可能更适合Java应用程序。但这些并不是问题的解决方案,只是绕过问题的方法。该jar文件被提取到/tmp,但某些东西阻止了它们的正确使用,我猜测是rpath的问题。 - Smar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接