在Windows 64位系统上安装QT Jambi出现问题

5
我一直在尝试使用QT Jambi,但我还没有成功安装它。首先,这是我的系统:
Windows 7 Home Premium 64位
Java 6 32位(我经常使用JDownloader,该软件与64位版本的Java不兼容)
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)将“C:\ QTJambi \ QT \ qt-qt \ bin”(QT源代码包文件夹)添加到环境PATH变量中
4)打开Visual Studio 2005命令提示符
5)cd C:\ QTJambi \ QT \ qt-qt
6)尝试:configure -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

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


1
尝试加载:'win32',期望:'win64'。加载库。 这表示当时使用的JVM是64位的,而不是32位的。 - Mat
我不知道该说什么,也许我有两个版本.. 我知道的是我编译和运行了很多不同的Java程序,从来没有出过问题。无论如何,问题在于我无法构建64位版本的QTJambi,所以如果JVM是64位的,那就不可能有问题! - Alex
您可以使用java -version命令检查您的Java版本。它应该返回位数信息。您需要在与编译相同的环境中执行此操作,否则可能会使用不同的Java版本(如果您安装了多个版本)。 - Smar
那个错误是由perl引起的,不是真正的致命错误;可以通过实际设置区域设置(LC_ALL="it_IT.utf8"或您的区域设置)来消除。 "locale"命令有所帮助。纯粹是MinGW/MSYS的东西。 - Smar
我该如何设置它?我在互联网上搜索了半个小时,但找不到如何做:/ - Alex
除非你有MSYS(和Bash),否则你不能喜欢那个。对于Windows的东西,我不知道多少,所以我总是使用MSYS来做事情。 - Smar
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)

顶部的是32位JVM;底部的是64位JVM。

现在尝试通过32位JVM加载您拥有的QtJambi二进制版本,您必须明确执行此操作,因为默认情况下,在Windows 64位平台上,“java.exe”应该是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)上方的命令行,将其指向您要运行和main()的JAR文件的位置。
如果由于UnsatisfiedLinkError而无法启动应用程序,并且您正在使用msvc2008构建,则尝试安装“Microsoft Visual C++ 2008 SP1 Redistributable Package(x86)”http://www.microsoft.com/download/en/details.aspx?id=5582 (注意:还有一个64位版本,此链接适用于在32位JVM上使用32位QtJambi,如果您还想要64位版本,请在Microsoft网站上搜索具有“(x64)”而不是“(x86)”标题的相同页面)。
然后重试您的测试。

2
Qt Jambi现在也支持64位编译,但获取适当的Qt相当困难。
对于MinGW,互联网上有一些资源可用。也许它们可以帮助你。使用MinGW-w64构建64位Qt 4.7 目前唯一受支持(由Nokia支持)的解决方案是64位MSVC编译,但据我所知,由于运行时不允许自由分发,Nokia没有分发这样的二进制文件。使用MSVC编译时,MSVC 2010的正确配置文件应该是win32-msvc2010。这些文件的列表可以在mkspecs目录中找到。
请注意,通常情况下您不必首先指定配置文件;只有在有多个可用的配置文件可供选择并且您想要使用某个特定的配置文件(例如MinGW或MSVC)时才需要指定。
使用64位环境,可以使用MSVC进行64位编译,详情请参考此页面
不建议使用Cygwin与Qt或Qt Jambi一起使用,如果您想要类Unix环境,请使用MSYS。

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