Qt+Halcon在XP上構建和執行
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
更具需要下載程式並安裝。
相關文章
- 在NuoDB上執行AsteriskAST
- 執行緒的基本操作:新建和終止執行緒執行緒
- 轉:在Linux上執行WinFormLinuxORM
- wine-在mac上執行exe執行檔案Mac
- 如何搭建和執行第二個Homestead盒子
- [面試專題]Vue.js 2.0 獨立構建和執行時構建的區別面試Vue.js
- 在VSCode上執行Python程式(Mac)VSCodePythonMac
- 在kubernetes上執行WASM負載ASM負載
- 怎樣在 Kubernetes 上執行 PostgreSQLSQL
- Hazelcast JET在Spring Boot上執行ASTSpring Boot
- Hummingbird: 在Web上執行Flutter應用WebFlutter
- 使用 SAP UI5 CLI 命令列工具構建和執行 SAP UI5 應用UI命令列
- 在Kubernetes上執行SAP UI5應用(上)UI
- 在 Windows 系統上執行 VIC 水文模型Windows模型
- 在 WASI 上執行 .NET 7 應用程式
- 在 NUC980 上執行 RT-Threadthread
- 軟體構建和隱喻
- Docker 教程:在 Mac M2 上執行 PostgreSQLDockerMacSQL
- 無需sudo使用Podman在Linux上執行容器Linux
- STM32流水燈在Protues上執行教程
- 為什麼在 Plasma 上難以執行 EVMASM
- 保證執行緒在主執行緒執行執行緒
- react中在函式繫結時會馬上執行.沒有加括號不會馬上執行React函式
- 在 Ubuntu 上安裝 .NET SDK 或 .NET 執行時Ubuntu
- 在Windows上執行Rainbond,10分鐘快速安裝WindowsAI
- 在Mac上執行Rainbond,10分鐘快速安裝MacAI
- Spark程式碼在叢集上執行過程理解Spark
- 6個在本地機器上執行 Kubernetes 的工具
- 組合語言 - 在Mac上執行 DEBUG.exe組合語言Mac
- 在linux上定期執行命令、指令碼(cron,crontab,anacron)Linux指令碼
- 怎樣在sqlite3上執行SQL語句SQLite
- 怎樣在windows上定時執行python指令碼WindowsPython指令碼
- 在IDEA上執行成功,打包成jar包後,執行報錯,程式自動退出IdeaJAR
- 幽默:重建模、重建和重構
- webpack構建和效能優化探索Web優化
- xp系統安裝不上pythonPython
- 在 Node.js 上執行 Flutter Web 應用和 APINode.jsFlutterWebAPI
- 在Ubuntu上利用vim進行程式編寫及執行Ubuntu行程