Qt程序windowsXP下运行
今天用户反馈新发的工具软件(基于Qt 5.14.2 mingw 7.3.0编写发布的)在windows XP下运行会报错,因为程序源码是没有变动过仅仅是重新编译打包发布给用户,原来程序是能在windows xp上正常运行的。在此期间我升级过MinGM和Qt所以从两个软件的版本开始排查。
mingw编译的程序在windows XP的运行情况
开始以为是MinGW-64版本过高引起的错误,于是从MinGW-64下载页面下载了4.8
,5.3
,7.3
,8.1
几个版。
用不同版本的编译器编译同一个源文件:
HelloWorld.cpp
1 |
|
不同版本编译器编译的程序在windows xp上的运行情况
从上面可以看出不同版本的MinGW编译器编译的程序都能成功在Windows XP上运行,排除编译器引起的问题
Qt不同版本编译的程序在Winddows XP上运行
从Qt下载页页分别下载5.1
,5.9
,5.14
几个版windows安装包。在官网的归档页面中没有5.1
到5.9
的中间版本(2022/2/20)如下图
用不同版本的Qt创建一个应用程序工程,并在主窗体中添加一个QTextEdit
控件,并在MainWind
的构造函数中添加如下代码:
1 | QString str; |
功能就是在文本框中显示Qt版信息和编译器的版本信息
Qt5.1_Mingw4.8
编译程序并打包所有dll文件
在windows XP下运行情况
在windows 10上的运行情况
从上面运行情况不难看出:同一个程序在windows 10上正常运行而在windows xp上确运行不起。
在windows xp下安装Qt5.1安装目录下的vcredist_sp1_x86
vs2010运行时库依然报错,重新从网上到了Vs2015的运行时库安装后问题依然。而且Qt5.1没有windeployqt
工具打包发布程序也不方便。而且之前正常运行的软件都是用windeployqt
打包发布的,所试了这个版的下一个版
Qt5.9_Mingw5.3
编译程序并用windeployqt
打包程序
程序在windows XP运行情况
同一程序在windows 10上是可以正常运行的。
在官网https://download.qt.io/archive/qt/
下没有比5.9更低的版本了,在网上查了下Qt支持Windows XP的最后版本是5.7
该不会Qt故意把社区5.1
~`5.9`的这些中间版本给删除了吧!好让用户购买付费版吧。
Qt5.7_Mingw5.3
都在想要不要转用wxwidgets
重写工具了。寻觅了一天终于在这页这个页面找到了这些中间版本
赶紧下载5.7
版本编译上面的工程源码并用windeployqt
打包程序。
程序在windows XP运行如下图:
果然Qt5.7
是支持windows XP的,同样下载了Qt5.8
程序运行效果跟Qt5.9
一致。所以说Qt5.7是支持Windows XP
的最后一个版本。
但Qt5.7
带的Qt Creator 4.2.0
在高分辨率显示缩放为150%时菜单字显示很小,在Qt14.2
带的Qt Creator 4.11.2
中就没这个问题了。
突发奇想要用Qt5.14
编译软件用Qt5.7
的windeployqt
发布软件又会怎样呢?说干就干结果还真出人所了两个版本的软件居然都运行成功了:
说明可以用Q5.14编程如果需要发布到window XP上时必须用Qt5.7打包发布。这个也有另一种可能是因为demo中使用的组件少没有报错而以。
Qt Creator 4.14
上面用Qt5.14
编译程序用Qt5.7
用打擦边球的方式解决了当前问题,哪有没有更好的方式呢?既能满足高分辨率下定代码,又能满足打包发布到windowsxp上运行。
既然我用Qt5.14
主要用它配的Qt Creator 4.14
哪我能不能直接下载新版Qt Creator
呢?
- 本地安装
Qt5.7
- 从Qt Creator下载页面选择需要的
Qt Creator 4.14
安装