環境:win10+vs2015+QT5.7.0
目標:編譯出能在windows xp上運行的QT
通過baidu和bing找不出來的結果沒有一個能成功運行,大部分都能編譯成功,并完美解決“exe不是有效的win32程序”,但是程序依舊沒法正常顯示窗口。
此時會有一個crash,具體位置是qwindows.dll,但是使用depends查看也沒看出來qwindows.dll有問題,有些人會遇到qwindows.dll依賴的
kernel32.dll在xp下沒有對應接口,具體接口不記得了,最后看到是QT5.5的問題,已經被修復了。
反復嘗試http://www.cnblogs.com/bbxx111/p/5461069.html這個帖子中的辦法,整整3次編譯,依舊不行,期間改過qt-build。bat腳本里面的SET CL=/D_USING_V140_SDK71_;%CL%,按照帖子的bat始終會有“__useHeader”重復定義的警告,作為軟件開發,我是受不了此類警告的,按照官方的doc(http://doc.qt.io/qt-5/windows-issues.html),修改bat警告依舊,最后整合stackoverflow和qt的論壇經驗編譯成功。
最后的編譯方法如下:
修改%QTDIR%\qtbase\qmake\Makefile.win32,在CFLAGS_BARE后加入-D_USING_V110_SDK71_ 修改%QTDIR%\qtbase\mkspecs\common\msvc-desktop.conf, 在DEFINES中加入_USING_V110_SDK71_; 修改QMAKE_LFLAGS_CONSOLE=/SUBSYSTEM:CONSOLE,5.01 修改QMAKE_LFLAGS_WINDOWS=/SUBSYSTEM:WINDOWS,5.01 QTDIR是QT源碼的目錄。 qt-build.bat如下: REM Set up \Microsoft Visual Studio 2015, where <arch> is amd64, x86, etc. CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 REM ********** Update include & lib to support xp win sdk 7.1A ********** SET PATH=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin;%PATH% SET INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;%INCLUDE% SET LIB=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;%LIB% SET CL=/D_USING_V110_SDK71_;%CL% REM ********** 3rd party build tools binaries: ruby, perl, python ********** SET PATH=C:\Ruby23-x64\bin;C:\Perl64\bin;C:\Python27;%PATH% REM ********** Set up qt source env ********** SET _ROOT=C:\Qt\qt-everywhere-opensource-src-5.7.0 SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH% REM Uncomment the below line when using a git checkout of the source repository REM SET PATH=%_ROOT%\qtrepotools\bin;%PATH% SET QMAKESPEC=win32-msvc2015 set _ROOT=REM Generate makefile configure.bat -mp -confirm-license -opensource -platform win32-msvc2015 -developer-build
-shared -target xp -prefix D:\Qt5.7.0-shared-win32-vs2015-xp -qt-sql-sqlite -qt-sql-odbc
-plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop
-qt-freetype -no-qml-debug -no-angle -nomake tests -nomake examples -skip qtquickcontrols
-skip qtquickcontrols2 -skip qtsensors -no-directwrite
為了排版好看,最后的配置加入了換行,如果需要復制的請注意去掉換行,避免編譯異常。
剩下的就是執行nmake,大概2個小時左右,編譯完成后執行nmake install進行安裝,上面腳本里配置的安裝路徑是D:\Qt5.7.0-shared-win32-vs2015-xp。
上面的方法可能存在冗余的東西,項目追得緊,先解決項目后再來仔細推敲和完善。
對于這個方法需要說明的2點:
1、vs2012之后需要編譯能在xp上運行的程序必須且只能定義宏_USING_V110_SDK71_,有些人會說V110不是要跟著vs的版本走嗎?如果你去嘗試解決__useHeader宏重定義時就會發現,vs2015里的頭文件里面判斷的也是_USING_V110_SDK71_。
2、configure配置腳本里面關鍵點是-target xp和-no-directwrite,第一個是配置目標平臺為xp,第二個是windows字體渲染的方式。傳送口在這里:https://msdn.microsoft.com/zh-cn/library/windows/apps/dd368038.aspx,文中明確指出directwrite必須windows 7以上的平臺。
directwrite的配置要感謝https://forum.qt.io/topic/62162/qt-5-6-doesn-t-compatible-with-windows-xp/12的問題答案。
參考文獻:
1、http://www.cnblogs.com/bbxx111/p/5461069.html
2、http://doc.qt.io/qt-5/windows-issues.html
3、https://forum.qt.io/topic/62162/qt-5-6-doesn-t-compatible-with-windows-xp/12
4、https://msdn.microsoft.com/zh-cn/library/windows/apps/dd368038.aspx
5、http://www.qtcn.org/bbs/read-htm-tid-56157.html
上一篇文章(Windows平臺在線安裝Qt 6.0.0圖文教程)對如何在Windows平臺上在線安裝Qt 6.0.0進行了詳細的介紹。不過有些朋友不太喜歡在線安裝方式,而是喜歡傳統的離線安裝方式,那么本文將滿足這些朋友的訴求。
本文將結合圖文對如何在Windows平臺上離線安裝Qt 5.14.2進行詳細介紹,供各位Qt 5初學者們參考。
注:本文適用于Qt 5.9、Qt 5.12、Qt 5.13、Qt 5.14全系列。
1、操作系統:Windows 7
2、安裝占用硬盤空間:2.2GB - 11.2GB
1)安裝文件大小2.3GB(安裝完成后可刪除)
2)最小安裝提示會占用2.16GB(僅安裝最基本的幾個組件模塊)
3)全部安裝提示會占用11.07GB(一般不建議全選,一些用不到的模塊太多占用硬盤空間。)
請參見上一篇文章《Windows平臺在線安裝Qt 6.0.0圖文教程》中的第1.2章節內容。
Qt 5.15系列之前的各版本Qt(Qt 5.9、Qt 5.12、Qt 5.13、Qt 5.14全系列),Qt官方均提供已經編譯好的二進制離線安裝包文件供開源用戶下載。
注:自Qt 5.15系列起(含Qt 5.15、Qt 6.0全系列),Qt官方宣布不再發布已經構建好的各平臺二進制離線安裝包文件供開源用戶下載,推薦使用在線方式來進行安裝。但會繼續提供已經構建好的各平臺二進制離線安裝包文件供商業用戶下載。
下表是Qt 5.x系列各主要版本最新發布情況:
Qt 5.x系列各主要版本最新發布情況
因為Qt 5.9、Qt 5.13、Qt 5.14系列均已停止維護,所以如果要從這幾個系列中選取Qt版本安裝,建議安裝版本相對最高、發布相對最新的Qt 5.14.2。本文也是因為此原因選取了Qt 5.14.2來進行安裝介紹。
此外,因為Qt 5.12是目前Qt官方還在維護的長期支持版本,所以至本文撰寫日期(2021年1月23日),2020年11月9日發布的Qt 5.12.10是Qt官方提供的最新一個可供下載的離線二進制安裝包文件版本。
注:從Qt提供的Qt 5.12系列發布計劃看,Qt 5.12.10應該不是最后一個版本。
從Qt官方資源下載網站或Qt國內鏡像下載網站下載最新版本的二進制Qt 5.14.2安裝包文件(如:qtqt-opensource-windows-x86-5.14.2.exe)。
Qt清華鏡像站二進制Qt 5.14.2安裝包文件下載
運行已經下載的離線二進制Qt 5.14.2安裝包文件,然后按照向導提示即可完成安裝操作:
Step1:運行離線安裝包文件,進入【Welcome】向導窗口
雙擊并運行離線安裝包文件,進入【Welcome】向導窗口,點擊【Next】按鈕。
【Welcome】向導窗口
Step2:輸入Qt賬戶登錄信息
進入【Qt Account】向導窗口,輸入有效的Qt賬戶登錄信息。
【Qt Account】向導窗口
注1:如果還沒有Qt Account,則需要在Qt 官網進行賬號注冊點擊(參加第1.2章節內容)。
注2:如果需要設置Qt鏡像Repository,則點擊向導窗口左下角【設置】按鈕進行相關設置(詳細設置可參見另一篇文章)。
Step3:確認同意遵守開源Qt義務
賬戶驗證通過后進入【Qt Open Source Uasge Obligations】向導窗口,勾選下方的復選框(表示已經閱讀和同意遵守開源Qt義務),然后點擊【下一步】按鈕。
【Qt Open Source Uasge Obligations】向導窗口
Step4:安裝提示
進入【安裝程序】向導窗口,點擊【下一步】按鈕。
【安裝程序】向導窗口
Step4:確定安裝路徑
進入【安裝文件夾】向導窗口,確定安裝路徑(如:C:\Develop\Qt\Qt5.14.2),然后點擊【下一步】按鈕。
【安裝文件夾】向導窗口
Step5:選擇安裝組件
進入【選擇組件】向導窗口,然后根據實際需要選擇安裝相應組件,點擊【下一步】按鈕。
【選擇組件】向導窗口
注1: 本文為最基本安裝,選擇的組件參考如下:
1、在Qt 5.14.2下:
1)MinGW 7.3.0 64-bit:由64位MinGW(8.3.0版本)構建的Qt5.142庫;
2、在Developer and Designer Tools下:
1)Qt Creator 4.11.1:Qt提供的集成開發環境,此組件無需選擇會被缺省安裝;
2)Qt Creator 4.11.1 CDB Debugger Support:Qt Creator的CDB調試支持組件;
注2:Qt 5.14.2下的MinGW 7.3.0 64-bit 與 MSVC 2017 64-bit 必須至少選擇其一(如果選擇MSVC 2017 64-bit,則系統必須已經安裝了Visual Studio 2017)。本文選擇了MinGW 7.3.0 64-bit。
Step6:閱讀并同意遵守許可證協議
進入【許可協議】向導窗口,選擇上面的單選項(選擇接受協議條款),點擊【下一步】按鈕。
【許可協議】向導窗口
Step7:確定開始菜單程序快捷名稱
進入【開始菜單快捷方式】向導窗口,確定本軟件包在開始菜單中程序快捷名稱(如可設為:Qt 6.0),點擊【下一步】按鈕。
【開始菜單快捷方式】向導窗口
Step8:提示安裝準備已經就緒,可以開始安裝
進入【準備安裝】向導窗口,提示安裝準備已經就緒,會占用2.03GB硬盤空間,點擊【安裝】按鈕。
【準備安裝】向導窗口
Step9:真正安裝Qt
(1)進入【安裝】向導窗口,進入真正的安裝環節,時間比較長,需耐心等待。
【安裝】向導窗口
(2)等到安裝完成,點擊【下一步】按鈕。
【安裝】向導窗口
Step10:安裝完成
進入【完成】向導窗口,點擊【完成】按鈕退出Qt安裝向導。
【完成】向導窗口
Step11:運行Qt Creator
因在【完成】向導窗口中勾選了【launch Qt Creator】,故安裝完成后會啟動Qt Creator,下圖為Qt Creator 4.11.1集成開發環境的主窗口。
Qt Creator 4.11.1集成開發環境的主窗口
接下來,就可以通過功能豐富的Qt Creator集成開發環境來進行Qt應用程序的開發了。
Qt安裝完成后會在安裝路徑(如:C:\Develop\Qt\Qt5.14.2)下生成如下圖所示的目錄和文件:
安裝后Qt目錄文件
其中主要子目錄和文件說明如下:
Qt安裝以后,如果想對已經安裝的Qt組件進行移除或更新、添加新的組件、直接卸載Qt,則可以通過Qt維護工具(MaintenanceTool.exe)來進行。
該維護工具位于Qt安裝路徑下(如:C:\Develop\Qt\Qt5.14.2\MaintenanceTool.exe)。
雙擊運行Qt維護工具,在向導窗口中按照提示逐步操作即可。
既然Qt 5.14.2(含SDK、IDE)已經安裝完畢,接下來就可以拿Qt Creator來上手試試驗證一下安裝成果。
下面示例是用Qt Creator(的新建Qt Widgets Application項目模板)創建的一個簡單的Qt桌面應用程序。
本示例開發的基本步驟參考如下:
Step1:運行Qt Creator,進入Qt集成開發環境。
Qt Creator IDE
Step2:打開【新建文件或項目】,進入向導窗口
通過快捷鍵Ctrl + N(或通過菜單項選擇【文件】-【新建文件或項目…】)打開【New File or Project】窗口,首先在左側項目欄下選擇【Application】,接著在右側選擇【Qt Widgets Application】,然后點擊【Choose】按鈕。
【新建文件或項目】窗口
Step3:在向導窗口設置項目路徑和項目名稱
進入【Location】向導窗口,根據實際情況設置項目路徑和項目名稱(參考如下),點擊【下一步】按鈕。
【Location】向導窗口
Step4:在向導窗口選擇構建系統
進入【Build System】向導窗口,選擇構建系統(缺省的qmake即可)。點擊【下一步】按鈕。
【Build System】向導窗口
Step5:在向導窗口指定類名、源碼文件、頭文件和窗體文件
進入【Details】向導窗口。指定類名、源碼文件、頭文件和窗體文件(缺省即可),點擊【下一步】按鈕。
【Details】向導窗口
Step6:在向導窗口指定翻譯語言和翻譯文件
進入【Translation】向導窗口指定翻譯語言和翻譯文件(缺省即可),點擊【下一步】按鈕。
【Translation】向導窗口
Step7:在向導窗口選擇開發包
進入【Kits】向導窗口選擇開發包(選擇Desktop Qt 5.14.2 MinGW 64-bit),點擊【下一步】按鈕。
【Kits】向導窗口
Step9:在向導窗口查看項目概覽
進入【Summary】向導窗口進行管理管理(可以添加子項目),并查看項目概覽(待生成的文件),缺省即可,點擊【完成】按鈕。
【Summary】向導窗口
Step10:在Qt Creator的編輯窗口編輯代碼,保存后編譯運行
進入Qt Creator的編輯窗口,對模板代碼稍微修改,保存后編譯運行。
Qt Creator的編輯窗口
Step11:運行結果
可以看到成功顯示一個Qt應用程序窗口(如下圖示)。
Qt應用程序窗口
自此,使用Qt Creator(Qt Widgets Application項目模板),一個簡單的Qt桌面應用程序就創建成功了。
Qt Creator還支持創建多種類型的桌面應用程序(Qt應用程序、Qt for Python應用程序、Qt Quick應用程序)、庫(C++庫、Qt Quick2擴展插件、Qt Creator插件)和其他程序(如普通C/C++、Python、Java應用程序等)。
好了,接下來就可以在Windows平臺上利用Qt Creator來進一步學習Qt 5.14.2進行桌面應用程序開發了。