5

我一直在尝试使用 QT Jambi,但我还无法安装它。首先,这是我的系统:

Windows 7 家庭高级版 64 位

Java 6 32位(我经常使用不兼容Java 64位版本的JDownloader)

附带 Code::Blocks 的 MinGW C++ 编译器(在设置期间设置所有必需的环境变量)

我也安装了 CygWin,但我不明白为什么在我得到的错误中提到它......

我的第一个想法是尝试 32 位版本,因为我有 32 位 Java,所以我在 Eclipse 中链接了库,尝试了教程中的经典初学者程序,我收到了这条消息:

java.lang.ExceptionInInitializerError
    at com.trolltech.qt.QtJambiObject.<clinit>(Unknown Source)
Caused by: java.lang.RuntimeException: Loading library failed, progress so far:
Unpacking .jar file: 'qtjambi-win32-msvc2008-4.7.1.jar'
Checking Archive 'qtjambi-win32-msvc2008-4.7.1.jar'
 - skipping because of wrong system: trying to load: 'win32', expected: 'win64'
Loading library: 'QtCore4.dll'...
 - using 'java.library.path'

    at com.trolltech.qt.internal.NativeLibraryManager.loadNativeLibrary(Unknown Source)
    at com.trolltech.qt.internal.NativeLibraryManager.loadQtLibrary(Unknown Source)
    at com.trolltech.qt.Utilities.loadQtLibrary(Unknown Source)
    at com.trolltech.qt.Utilities.loadQtLibrary(Unknown Source)
    at com.trolltech.qt.QtJambi_LibraryInitializer.<clinit>(Unknown Source)
    ... 1 more
Caused by: java.lang.RuntimeException: Library 'QtCore4.dll' was not found in 'java.library.path'=C:\Program Files\Java\jre6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:    \Windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Broadcom\Broadcom 802.11\Driver;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Program Files (x86)\CodeBlocks\MinGW\bin\;C:\Program Files (x86)\QuickTime\QTSystem\;C:\cygwin\bin;C:\Program Files\Microsoft Windows Performance Toolkit\;.
    at com.trolltech.qt.internal.NativeLibraryManager.loadLibrary_helper(Unknown Source)
    ... 6 more
Exception in thread "main"

然后因为它说它需要一个 64 位系统,所以我按照安装指南尝试了以下步骤:

1) 下载QTJambi源码包

2) 下载原QT源码包

3)在环境PATH变量中添加“C:\QTJambi\QT\qt-qt\bin”(QT源码包文件夹)

4) 打开 Visual Studio 2005 命令提示符

5) cd C:\QTJambi\QT\qt-qt

6)尝试:配置-platform win64 -g++ -D QT_JAMBI_BUILD -no-qt3support -plugin-manifests

但它没有用,错误:invalid option win64-g++ for -platform

7) 尝试过 configure -platform win32 -g++ -D QT_JAMBI_BUILD -no-qt3support -plugin-manifests

8) 数字 o 表示开源

9) 数字 y 用于接受许可证

但它也不起作用,出现此错误:

 Running syncqt...
 perl: warning: Setting locale failed.
 perl: warning: Please check that your locale settings:
        LC_ALL = (unset) 
        LANG = "IT"
        are supported and installed on your system.
 perl: warning: Falling back to the standard locale ("C").
 Can't execute /cygdrive/c/QTJambi/QT/qt-qt/bin//syncqt
 syncqt failed, return code 2

有谁能帮忙吗?提前感谢任何人!

4

2 回答 2

4

此响应试图解释和解决原始问题(即如何在 64 位 Windows 系统上使用 32 位 QtJambi 二进制分发)。

由于错误的系统而跳过:尝试加载:'win32',预期:'win64'

这是来自 QtJambi 初始化代码的消息,该代码检测到 JVM 的 32/64 位与试图在运行时加载到 JVM 实例中的 QtJambi 实现的 32/64 位之间的不匹配。

在您的情况下,这是由于尝试将 64 位 JVM 与 32 位版本的 QtJambi 一起使用。这是不可能的壮举。要更正问题,请在您的系统上直接找到并安装 Windows 32 位 JVM,以便您拥有文件“C:\Program Files (x86)\Java\jre6\bin\java.exe”(您可能已经安装了它,请查看)

当它们都安装在 64 位系统上时,看看它们之间的区别:

C:\>"C:\Program Files (x86)\Java\jre6\bin\java.exe" -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)

C:\>"C:\Program Files\Java\jre6\bin\java.exe" -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

最上面的是32bit JVM;底部是 64 位 JVM。

现在尝试通过 32 位 JVM 加载您拥有的 QtJambi 二进制版本,您必须明确执行此操作,因为默认的“java.exe”应该是 Windows 64 位平台上的 64 位版本:

"C:\Program Files (x86)\Java\jre6\bin\java.exe" -cp qtjambi-X.Y.Z.jar;qtjambi-win32-msvc2008-X.Y.Z.jar;myjar.jar  mypackage.MyMain

您需要将 ClassPath (-cp) 上方的命令行修复到您尝试运行的 JAR 和 main() 的位置。

如果由于 UnsatisfiedLinkError 而无法启动应用程序并且您使用的是 msvc2008 版本,请尝试安装“Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)” http://www.microsoft.com/download/en/details .aspx?id=5582 (注意:还有一个 64 位版本,此链接适用于 32 位版本,与在 32 位 JVM 上使用 32 位 QtJambi 相关,如果您还想要 64 位版本搜索相同标题中带有“(x64)”而不是微软网站上的“(x86)”的页面)。

然后重试您的测试。

于 2011-09-25T14:50:39.523 回答
2

现在的 Qt Jambi 也支持 64 位编译,但获得正确的 Qt 相当困难。

对于 MinGW,Internet 上有一些可用的资源。也许他们可以帮助你。使用 MinGW-w64 构建 64 位 Qt 4.7

目前仅支持(诺基亚)解决方案是 64 位 MSVC 编译,但 AFAIK 没有从诺基亚分发的此类二进制文件,因为不允许自由分发运行时。使用 MSVC 编译时,MSVC 2010 的正确配置文件是 win32-msvc2010。这些列表可以在 mkspecs 目录中找到。

请注意,您通常不必首先指定配置文件;仅当您可以使用许多可用的配置文件并且您想要使用某个配置文件(例如 MinGW 或 MSVC)时。

根据此页面,使用 MSVC 进行 64 位编译使用 64 位环境。

不建议将 Cygwin 与 Qt 或 Qt Jambi 一起使用。如果您想要类似 unix 的环境,请使用 MSYS。

于 2011-09-25T12:33:13.023 回答