Qt Jambi 版本兼容性

Posted

技术标签:

【中文标题】Qt Jambi 版本兼容性【英文标题】:Qt Jambi version compatibility 【发布时间】:2011-10-20 16:50:29 【问题描述】:

我打算使用 Qt Jambi 在 Java 中编写 Qt GUI。

我在当前版本为 4.7.4 的 Linux 操作系统上安装了最新的 Qt 库。然而,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 一起部署(作为固定版本)。

【问题讨论】:

您可以尝试的一件事是提取本机 jar 并使用 chrpath 从这些库中删除 rpath 和运行路径,然后使用 LD_LIBRARY_PATH 针对所有这些库所在的目录运行。那些较旧的版本是 IIRC 仍然与设置了 rpaths 的库捆绑在一起,因此如果存在系统 Qt,它们将无法正常工作。 你有哪个发行版,顺便说一句?我认为它不是 Ubuntu,因为 Ubuntu 软件包不行? 你是对的,如果我从本机库中删除 rpath 并使用 LD_LIBRARY_PATH 设置运行应用程序,它就可以工作。但是,使用 -Djava.library.path 会导致相同的错误消息。 “旧版本”是指遵循 Qt Jambi 版本不会有这个问题吗?唯一可用的版本是 Linux 的 4.7.0,也许 Ubuntu 软件包更新。为了回答你的问题,我正在使用 ArchLinux。 抱歉,直到现在还没有新版本,我们正在努力在接下来的几个月里做一些事情。 你能详细说明一下吗?我在 qtjambi-linux64-gcc.4.7.0.jar 中的所有本机库上使用了 chrpath -d ,但它没有解决问题。问题是我可以运行一些 qt 示例,但例如媒体播放器不工作。 【参考方案1】:

作为一个社区驱动的分支,Qt-Jambi 稍微落后于官方 Qt 的开发。

Qt-Jambi 应该与正确的 Qt 库一起预先打包,但您的应用程序似乎正在引用系统上已安装的最新 Qt 库。您不能混合使用不同的版本,因此您需要引用相同版本的 Qt 二进制文件。

如果您没有在构建环境中明确引用新的 Qt 库,则应修改 LD_LIBRARY_PATH 环境变量以包含正确库的路径。

【讨论】:

或者使用 -Djava.library.path 可能更适合 Java 应用程序。但这些并不是问题的完全解决方案,只是解决问题的一种方法。 jar 被提取到 /tmp,但是有些东西阻止了它们的正确使用,我猜是 rpath thingys。

以上是关于Qt Jambi 版本兼容性的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu qt使用不同版本boost,兼容系统下的boost

哪个 Qt Creator 与 Qt4 兼容?

d指针在Qt上的应用及实现(d指针能实现二进制兼容)

d指针在Qt上的应用及实现(有图,很清楚)

关于编写Windows程序中启动兼容性问题

Qt Jambi 开发还有可能吗?