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
更具需要下載程式並安裝。
相關文章
- VS2010編譯的程式在XP上無執行庫執行,以及ADO在XP上報80004003的錯誤處理編譯
- 甲骨文:XP上依舊可以執行JavaJava
- 在NuoDB上執行AsteriskAST
- 在window上執行bash
- 【NOIP複賽篇1】上機指南(一)環境搭建和執行
- 執行緒的基本操作:新建和終止執行緒執行緒
- XP系統在啟動執行捲軸時速度很慢
- wine-在mac上執行exe執行檔案Mac
- [面試專題]Vue.js 2.0 獨立構建和執行時構建的區別面試Vue.js
- WINDOWS XP 執行命令(轉載)Windows
- 在 Azure 上使用 Docker 執行 MonoDockerMono
- 轉:在Linux上執行WinFormLinuxORM
- ZeroMQ 3.2.2 XP下無法執行MQ
- 如何搭建和執行第二個Homestead盒子
- Hazelcast JET在Spring Boot上執行ASTSpring Boot
- Phoenix:在HBase上執行SQL查詢SQL
- 在Heroku上執行Go+Revel程式Go
- 在APACHE上執行ASP.NET程式ApacheASP.NET
- 使用 SAP UI5 CLI 命令列工具構建和執行 SAP UI5 應用UI命令列
- 在單機上執行julia並行加速的例子並行
- 怎樣在 Kubernetes 上執行 PostgreSQLSQL
- 在kubernetes上執行WASM負載ASM負載
- 在 WASI 上執行 .NET 7 應用程式
- 在 Windows 系統上執行 VIC 水文模型Windows模型
- Clojure執行環境在windows上安裝Windows
- 配置 Rational Functional Tester 在 Linux 上執行FunctionLinux
- 使用 ARChon 執行時環境在 Ubuntu 上執行 Android 應用UbuntuAndroid
- 在Kubernetes上執行SAP UI5應用(上)UI
- Hummingbird: 在Web上執行Flutter應用WebFlutter
- 在 NUC980 上執行 RT-Threadthread
- 為什麼在 Plasma 上難以執行 EVMASM
- STM32流水燈在Protues上執行教程
- 在TQ2440上執行perf,生成Flame Graph
- 在多節點的叢集上執行Cassandra
- 在OSX和Windows版本Docker上執行GUI程式WindowsDockerGUI
- 在NetBSD/i386上執行Oracle(轉)Oracle
- 在掌上電腦HPiPAQ上執行Linux(轉)Linux
- Docker 教程:在 Mac M2 上執行 PostgreSQLDockerMacSQL