XP是很老的系统了,微软都不支持,也很是有客户会用到XP系统,我们的软件支持Win10和Win7,就是不支持XP。这次我们遇到的这个客户不能更换系统,只能让我们的软件支持XP。
让软件支持XP有可能比写软件本身都还要麻烦,主要是现在好多第三方库都不支持XP,所以软件改动特别大。
一、构建支持XP的QT环境
Qt5目前有两个长期支持版本(Long Term Support)Qt5.6和Qt5.9;
Qt从5.7版本及以后不再支持WinXP系统,即编译生成的exe文件无法在WinXP系统运行,若要支持xp,推荐最稳定方式qt5.5.+vs2010(曾生成的exe在xp sp3部署上千台),稍微激进+最新组合vs2015+qt5.6(传言仍然有人反馈xp依然会有莫名其妙问题);
由于2020年qt要进入QT6版本,所以QT5的有些版本已经改变位置,改为
http://download.qt.io/new_archive/qt/
我这次选用的是Qt5.6.2+VS2015,下载地址如下,版本如下图所示
http://download.qt.io/new_archive/qt/5.6/5.6.2/
下载安装前应该先安装VS2015。
在Pro文件加入一些内容,让程序支持XP。
win32 {
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE,5.01
DEFINES += _ATL_XP_TARGETING
# QMAKE_CFLAGS += /D _USING_V120_SDK71_
# QMAKE_CXXFLAGS += /D _USING_V120_SDK71_
# LIBS += -L$$quote(C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib)
# INCLUDEPATH += $$quote(C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include)
}
二、构建支持XP的Halcon环境
Halcon高版本也不支持QT,只有Halcon12,Halcon11才支持,而12、11这两个版本和我现在用的19差别特别大,要改的东西相当多,而且12、11有些功能不支持,没办法只能将Halcon13编译一个支持XP的库,Halcon13和19接近,但也有些东西不支持,但是改动东西要少。
这里我把编译好的库和头文件放到了网盘,有需要的可以下载。
链接:https://pan.baidu.com/s/1PKrPz-kpBUdmhAmuBj4LRA
提取码:0o6l
下载后加入Halcon13的头文件和库。
INCLUDEPATH += "$$PWD/Halcon/halcon13_x86_xp/include"
INCLUDEPATH += "$$PWD/Halcon/halcon13_x86_xp/include/halconcpp"
#libs
QMAKE_LIBDIR += "$$PWD/Halcon/halcon13_x86_xp/lib"
LIBS += $$quote($$PWD/Halcon/halcon13_x86_xp/lib/halconcpp.lib)
LIBS += $$quote($$PWD/Halcon/halcon13_x86_xp/lib/halcon.lib)
三、部署程序运行环境
先获取Qt运行的库,进入命令模式输入windeployqt.exe的路径+你的程序名。
D:\5.6.3\msvc2015\bin\windeployqt.exe myapp.exe
然后就会自动生成qt依赖库。
然后加入halcon13的dll。
最后在XP上很有可能会缺少MSVC库,然后要下一个
Visual C Redistributable for Visual Studio 2015,下载地址为
https://www.microsoft.com/zh-cn/download/details.aspx?id=48145
更具需要下载程序并安装。