的HelloWorld部署与QtQuick 2.0在Windows 7和XP(HelloWorld

2019-08-17 03:26发布

我一直在努力让我的应用程序正确部署了几个星期,现在(这是一个爱好),我只是不知道什么尝试。

我Qt Creator中(2.6.1)启动了一个新项目,选择应用程序 - > Qt Quick的2应用程序(内置元件)。 我调整了QML使背景蓝色和红色的文字:

main.qml

import QtQuick 2.0

Rectangle {
    width: 360
    height: 360
    color: "blue" // Added!
    Text {
        text: qsTr("Hello World")
        anchors.centerIn: parent
        color: "red" // Added!
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }
}

我使用Qt 5.0.1和86 MSVC 2010的编译器。 我内置的发行版本,它在QtCreator运行良好。 如果您需要更多的编译器的细节,我会后他们。

要部署,我创建了我的桌面称为一个新文件夹HelloWorld/和复制一切H:\Qt\Qt5.0.1\5.0.1\msvc2010\bin\*H:\Qt\Qt5.0.1\5.0.1\msvc2010\plugins\*和“H:\ Qt的\ Qt5.0.1 \ 5.0.1 \ msvc2010 \ QML *进去,与HelloWorld.exe的版本一起执行。

矫枉过正? 是。 不过,我渴望。

当我在Windows 7中运行的HelloWorld / 64 HelloWorld.exe的位,应用程序运行正常。 但是,当我在这个复制的HelloWorld /文件夹到运行Windows XP的32位虚拟机,它显示了一个正常大小的窗口,但什么也没有(白色,无文本)。 当在窗口的中央单击,窗口关闭,因为它应该。

所以我装在Dependency Walker中的可执行文件,但没有显得与众不同(IESHIMS.DLL和WER.DLL是当然缺少的)。 我跑了启动配置文件,并获得红错误的转换:

GetProcAddress的(0x7C800000 [KERNEL32.DLL], “FlsAlloc”)从 “MSVCR100.DLL” 称为在地址0x78ABBA3B和返回NULL。 错误:指定的程序无法找到(127)。

GetProcAddress的(0x7C800000 [KERNEL32.DLL], “FlsGetValue”)从 “MSVCR100.DLL” 称为在地址0x78ABBA48和返回NULL。 错误:指定的程序无法找到(127)。

GetProcAddress的(0x7C800000 [KERNEL32.DLL], “FlsSetValue”)从 “MSVCR100.DLL” 称为在地址0x78ABBA55和返回NULL。 错误:指定的程序无法找到(127)。

GetProcAddress的(0x7C800000 [KERNEL32.DLL], “FlsFree”)从 “MSVCR100.DLL” 称为在地址0x78ABBA62和返回NULL。 错误:指定的程序无法找到(127)。

LoadLibraryExW( “C:\ Documents和Settings \老板\桌面\ HelloWorld的\平台\ qminimald.pdb”,00000000,DONT_RESOLVE_DLL_REFERENCES)返回NULL。 错误:%1不是有效的Win32应用程序(193)。

LoadLibraryExW( “C:\ Documents和Settings \老板\桌面\ HelloWorld的\平台\ qwindowsd.pdb”,00000000,DONT_RESOLVE_DLL_REFERENCES)返回NULL。 错误:%1不是有效的Win32应用程序(193)。

GetProcAddress的(0x7E410000 [USER32.DLL], “UpdateLayeredWindowIndirect”)从 “QWINDOWS.DLL” 称为在地址0x013A8749和返回NULL。 错误:指定的程序无法找到(127)。

GetProcAddress的(0x7C9C0000 [SHELL32.DLL], “SHCreateItemFromParsingName”)从 “QWINDOWS.DLL” 称为在地址0x013A8997和返回NULL。 错误:指定的程序无法找到(127)。

GetProcAddress的(0x7C9C0000 [SHELL32.DLL], “SHGetStockIconInfo”)在地址0x013A89C9从 “QWINDOWS.DLL” 调用并返回NULL。 错误:指定的程序无法找到(127)。

GetProcAddress的(0x7C800000 [KERNEL32.DLL], “GetTickCount64”)从 “QT5CORE.DLL” 称为在地址0x670726A7和返回NULL。 错误:指定的程序无法找到(127)。

GetProcAddress的(0x755C0000 [MSCTFIME.IME], “ImeGetImeMenuItems”)从 “IMM32.DLL” 称为在地址0x76397354和返回NULL。 错误:指定的程序无法找到(127)。

GetProcAddress的(0x4FDD0000 [D3D9.DLL], “Direct3DCreate9Ex”)在地址0x01487198从 “LIBEGL.DLL” 调用并返回NULL。 错误:指定的程序无法找到(127)。

我也试着运行调试版本,但我只有MSVC100 dll的64位版本,所以我不能将它们复制到XP的机器(我只能运行32位可再发行)。 我不知道我可以用什么其他工具来试图解决我的问题。

我知道我必须做一些愚蠢的,但我真的不能在互联网上找到任何帮助。 这真是令人沮丧花那么多时间开发的Qt应用程序,然后卡住尝试部署它。

我要指出的是,程序运行在Windows 7 32位虚拟机就好了(已安装MSVC2012可再发行后)。

我在跑步真正感兴趣的应用程序,运行非常奇怪在Windows XP中。 当我第一次运行它,窗口大小正常和几个文本字符串显示出来。 但没有一个矩形{}元素的显示。 我离开了应用程序运行几分钟,我自己做了一些咖啡,当我回到我的电脑,窗户是闪烁的任意形状和文本,文本光标的节拍! 那是什么呀?! 它看起来像一个基本的数学函数搞砸了,因此在不适当的大小和位置都被显示在界面的部分。 我甚至看到了鼠标光标的一个闪烁的真正界面显示出来(是的,随机的形状出现和消失的鼠标光标的节拍)。

一时兴起,我想使用的应用程序(点击这里,我知道存在一个文本框),来填充列表中的一个,和它的工作! 在应用程序运行完全正常,除了图形。 我知道的Qt 5.0返工一些OpenGL的处理,对不对? 难道这是我还没有安装一个bug,或者一个库?

Answer 1:

部署在Windows XP快2.0应用程序使用Qt 5.1 RC1与ANGLE建造时,我也遇到了同样的问题; 它似乎是角度问题,在http://qt-project.org/wiki/Qt-5-on-Windows-ANGLE-and-OpenGL建议使用OpenGL的XP,也Qt的5.1 OPENGL对我的作品上Windows XP中



Answer 2:

  1. 安装的Microsoft Visual C ++ 2010可再发行组件包(x86)在客户机(Windows XP中)。
  2. 使用发布版本,而不是调试版本,你好像是用Debug版本。
  3. 不要使用OpenGL(大多数XP的用户可能会注意到有更新版本的OpenGL,否则,你可能不得不迫使他们升级。)

更新使用OpenGL的Windows XP。 用户必须安装或升级他们的OpenGL驱动程序。 阅读此 。



Answer 3:

尝试使用MinGW的版本,而不是VC ++之一。 这可能是因为有层和.NET的东西层防止你在XP上运行。 XP出来之前,90%的电流净的东西存在是因为它没有安装,为什么它不会工作。

只是一种猜测,但它值得一试。



文章来源: HelloWorld Deployment with QtQuick 2.0 in Windows 7 and XP