Visual c++ 在Windows 7和XP中使用QtQuick 2.0进行HelloWorld部署

Visual c++ 在Windows 7和XP中使用QtQuick 2.0进行HelloWorld部署,visual-c++,deployment,qml,qt5,qtquick2,Visual C++,Deployment,Qml,Qt5,Qtquick2,几周来,我一直在努力让我的应用程序正确部署,现在这是一种爱好,我不知道还有什么可以尝试 我在QtCreator2.6.1中启动了一个新项目,方法是选择Applications->QtQuick2ApplicationBuildinElements。我调整了QML,使背景为蓝色,文本为红色: main.qml 我正在使用Qt5.0.1和x86MSVC2010编译器。我构建了发布版本,在QtCreator中运行良好。如果您需要更多的编译器细节,我会发布它们 为了部署,我在桌面上创建了一个名为Hell

几周来,我一直在努力让我的应用程序正确部署,现在这是一种爱好,我不知道还有什么可以尝试

我在QtCreator2.6.1中启动了一个新项目,方法是选择Applications->QtQuick2ApplicationBuildinElements。我调整了QML,使背景为蓝色,文本为红色:

main.qml 我正在使用Qt5.0.1和x86MSVC2010编译器。我构建了发布版本,在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可执行文件复制到该文件夹中

过度杀戮?对但我很绝望

在64位Windows 7中运行HelloWorld/HelloWorld.exe时,应用程序运行正常。但是,当我将这个HelloWorld/文件夹复制到运行WindowsXP32位的虚拟机上时,它会显示一个大小合适的窗口,但没有任何内容,白色,没有文本。在窗口中心单击时,窗口将按其应关闭的方式关闭

因此,我在Dependency Walker中加载了可执行文件,但是普通的IESHIMS.DLL和WER.DLL中没有任何东西丢失。我运行了启动配置文件,并得到一系列红色错误:

GetProcAddress0x7C800000[KERNEL32.DLL],FlsAlloc从地址0x78ABBA3B处的MSVCR100.DLL调用并返回NULL。错误:找不到指定的过程

GetProcAddress0x7C800000[KERNEL32.DLL],从地址0x78ABBA48处的MSVCR100.DLL调用FlsGetValue并返回NULL。错误:找不到指定的过程

GetProcAddress0x7C800000[KERNEL32.DLL],从地址0x78ABBA55处的MSVCR100.DLL调用FlsSetValue并返回NULL。错误:找不到指定的过程

GetProcAddress0x7C800000[KERNEL32.DLL],从地址0x78ABBA62处的MSVCR100.DLL调用FlsFree并返回NULL。错误:找不到指定的过程

LoadLibraryExWC:\documents and settings\owner\desktop\helloworld\platforms\qminimald.pdb,0x00000000,不解析\u DLL\u引用返回空值。错误:%1不是有效的Win32应用程序193

LoadLibraryExWC:\documents and settings\owner\desktop\helloworld\Platform\qwindowsd.pdb,0x00000000,不解析\U DLL\U引用返回空值。错误:%1不是有效的Win32应用程序193

GetProcAddress0x7E4100[USER32.DLL],UpdateLayeredWindowIndirect从地址0x013A8749处的QWINDOWS.DLL调用并返回NULL。错误:找不到指定的过程

GetProcAddress0x7C9C0000[SHELL32.DLL],SHCreateItemFromParsingName从地址0x013A8997处的QWINDOWS.DLL调用并返回NULL。错误:找不到指定的过程

GetProcAddress0x7C9C0000[SHELL32.DLL],SHGetStockIconInfo从地址0x013A89C9处的QWINDOWS.DLL调用并返回NULL。错误:找不到指定的过程

GetProcAddress0x7C800000[KERNEL32.DLL],从地址0x670726A7处的QT5CORE.DLL调用GetTickCount64并返回NULL。错误:找不到指定的过程

GetProcAddress0x755C0000[MSCTFIME.IME],ImeGetImeMenuItems从地址0x76397354处的IMM32.DLL调用并返回NULL。错误:找不到指定的过程

GetProcAddress0x4FDD0000[D3D9.DLL],Direct3DCreate9Ex从地址0x01487198处的LIBEGL.DLL调用并返回NULL。错误:找不到指定的过程

我还尝试运行调试版本,但我只有64位版本的MSVC100 dll,所以我无法将它们复制到XP机器上,我只能运行32位的可再发行版本。我不知道还有什么工具可以用来解决我的问题

我知道我一定在做傻事,但我真的在网上找不到任何帮助。花这么多时间开发一个Qt应用程序,然后又在尝试部署它时陷入困境,这真是令人沮丧

我应该注意,在安装MSVC2012 redistributable之后,该程序在Windows 7 32位虚拟机中运行良好

我非常感兴趣的应用程序在Windows XP中运行得非常奇怪。当我第一次运行它时,窗口大小正确,并显示了一些文本字符串。但是没有显示任何矩形{}元素。当我给自己煮咖啡时,我让应用程序运行了几分钟,当我回到电脑时,窗口随着文本光标的节拍闪烁着随机的形状和文本!那到底是什么?!它看起来像是一个基本的数学函数被搞糟了,所以界面的某些部分被显示在不正确的大小和位置。我甚至在鼠标光标一眨眼的时候就看到了真实的界面,是的,随机的形状是 随着鼠标光标的跳动出现并消失


一时兴起,我尝试使用应用程序单击我知道存在文本框的地方,填充其中一个列表,结果成功了!应用程序运行完全正常,除了图形。我知道Qt5.0修改了一些OpenGL处理,对吗?这可能是一个bug,或者可能是我没有安装的库?

尝试使用MinGW版本而不是VC++版本。很可能有一层层的.Net内容阻止你在XP上运行。XP在当前90%的.Net产品出现之前就已经出现了,这就是为什么它没有安装就不能工作的原因


只是一个猜测,但值得一试。

尝试使用MinGW版本而不是VC++版本。很可能有一层层的.Net内容阻止你在XP上运行。XP在当前90%的.Net产品出现之前就已经出现了,这就是为什么它没有安装就不能工作的原因


只是一个猜测,但值得一试。

在Windows XP上部署quick 2.0应用程序时,我也遇到了同样的问题,该应用程序由Qt 5.1 rc1和ANGLE构建;这似乎是角度问题,在上,建议使用OPENGL for XP,并且Qt 5.1 with OPENGL在Windows XP上适用于我

在Windows XP上部署quick 2.0应用程序时,我也遇到了同样的问题,该应用程序由Qt 5.1 rc1 with ANGLE构建;这似乎是角度问题,建议使用OPENGL for XP,也建议使用Qt 5.1 with OPENGL在Windows XP上为我工作

安装 在客户端计算机windows xp上。 使用发布版本,而不是调试版本,您似乎正在使用调试 版本 不要使用OpenGL大多数XP用户可能会注意到已经更新了OpenGL 版本,否则‍ 你可能不得不强迫他们升级它。 更新 使用OpenGL for Windows XP。用户必须安装或升级其OpenGL驱动程序

安装 在客户端计算机windows xp上。 使用发布版本,而不是调试版本,您似乎正在使用调试 版本 不要使用OpenGL大多数XP用户可能会注意到已经更新了OpenGL 版本,否则‍ 你可能不得不强迫他们升级它。 更新
使用OpenGL for Windows XP。用户必须安装或升级其OpenGL驱动程序

请参阅我的原始帖子中的“再次编辑”部分。我认为这可能与图形问题有关,而不是编译器问题。应用程序确实在运行,只是无法正确显示图形。请参阅我的原始帖子中的“再次编辑”部分。我认为这可能与图形问题有关,而不是编译器问题。应用程序确实在运行,只是无法正确显示图形。
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();
        }
    }
}