Qt——Windows端打包發佈【全面】

打包發佈

參考:
QT的程序打包發佈(將QT5的工程項目打包成一個可直接運行的exe程序)【講解:Qt Widgets Application(正常qt/c++項目)與Qt Quick Application(qml項目)兩種打包方式】
QT windows 下生成可執行程序【用打包工具 Engima Virtual Box將windeployqt處理後的目錄再次處理,生成一個.exe(不需要任何的.dll文件)】
qt打包發佈【詳細圖步驟】
怎樣解決Qt編譯出的程序運行時缺少libgcc_s_dw2-1.dll 文件的問題?【文章表達的是:通過“配置Qt5.8的bin目錄至環境變量”來解決問題,但實際上我的“系統錯誤”不是“因忘記配置環境變量”導致的!所以對我目前的錯誤是無效方法。】
找不到libgcc_s_dw2-1.dll, 嘗試重新安裝該程序以解決問題.【文章表達的是:配置環境變量可以解決(這個對我的不可行,上面已說),但使用另外方法:從網上下載對應dll,其實做了無用功。】
This application failed to start because it could not find or load the Qt platforms plugins【裏面的解決方案我並沒有嘗試,但是告訴我了,該錯誤是因爲沒有了platforms目錄的qwindows.dll文件!】

聲明

Windows端

急着打包發佈,請直接看這兩個菜單

  • 解決問題 或 打包步驟,用Qt for Desktop窗口進行windeployqt處理
    • 【拷貝整個目錄到其他電腦運行成功】
  • 打包後,再簡化打包
    • 【拷貝一個簡化打包的.exe文件到其他電腦運行成功】

Linux端

若你在Linux端,只要打開終端 輸入:qmake–>make clean–>make,編譯產生的.exe可以在開發板子上使用,但是,你將編譯後的.exe文件移到Windows端,將無法使用【因爲Linux識別的.exe可執行文件要用AptURL工具,而Windows端中沒有該工具】!!!
解決:
只能將Linux端開發的Qt項目拷貝一份至Windows端,換MinGW編譯器(環境配置),然後重複Windows端打包發佈步驟!
在這裏插入圖片描述

爲什麼要打包發佈

Windows端

移植Debug目錄下或Release目錄下的.exe文件至其他電腦,在沒安裝Qt的情況下,雙擊.exe文件,會彈出這樣的警告窗口:
在這裏插入圖片描述
爲了解決這個“系統錯誤”,有兩種方法:
【1】:在對應電腦下載Qt
【2】:打包發佈

分析:
【1】—> 可行,但,難道每次移植其他電腦都要安裝Qt,操作很繁瑣、不方便,爲什麼不能實現“一移植即可運行”???
【2】—> 可行,只需要在移植前,做繁瑣操作,若移植至其他電腦,可實現“一移植即可運行”。
在這裏插入圖片描述
總結:要打包發佈.exe文件!!!

手誤,用CMD進行windeployqt處理

在這裏插入圖片描述
還沒看清楚步驟,我就急着用管理員身份打開了CMD,用“windeployqt LightUnifTest.exe”【以下是指令的打印結果,請注意,其中出現該異常“Warning: Cannot find GCC installation directory. g++.exe must be in the path.”】

D:\test\LightUnifTest.exe 32 bit, release executable
Adding Qt5Svg for qsvgicon.dll
Skipping plugin qtvirtualkeyboardplugin.dll due to disabled dependencies.
Direct dependencies: Qt5Core Qt5Gui Qt5Widgets
All dependencies   : Qt5Core Qt5Gui Qt5Widgets
To be deployed     : Qt5Core Qt5Gui Qt5Svg Qt5Widgets
Warning: Cannot find GCC installation directory. g++.exe must be in the path.
Updating Qt5Core.dll.
Updating Qt5Gui.dll.
Updating Qt5Svg.dll.
Updating Qt5Widgets.dll.
Updating libGLESV2.dll.
Updating libEGL.dll.
Updating D3Dcompiler_47.dll.
Updating opengl32sw.dll.
Patching Qt5Core.dll...
Creating directory D:/test/iconengines.
Updating qsvgicon.dll.
Creating directory D:/test/imageformats.
Updating qgif.dll.
Updating qicns.dll.
Updating qico.dll.
Updating qjpeg.dll.
Updating qsvg.dll.
Updating qtga.dll.
Updating qtiff.dll.
Updating qwbmp.dll.
Updating qwebp.dll.
Creating directory D:/test/platforms.
Updating qwindows.dll.
Creating D:\test\translations...
Creating qt_ca.qm...
Creating qt_cs.qm...
Creating qt_de.qm...
Creating qt_en.qm...
Creating qt_fi.qm...
Creating qt_fr.qm...
Creating qt_he.qm...
Creating qt_hu.qm...
Creating qt_it.qm...
Creating qt_ja.qm...
Creating qt_ko.qm...
Creating qt_lv.qm...
Creating qt_pl.qm...
Creating qt_ru.qm...
Creating qt_sk.qm...
Creating qt_uk.qm...

在這裏插入圖片描述
我並沒在意打印結果有沒有出現errorOrexception,我拷貝test目錄,換臺電腦雙擊打開.exe文件,彈出如圖所示的“系統錯誤”提示框:
在這裏插入圖片描述

解決問題 或 打包步驟,用Qt for Desktop窗口進行windeployqt處理

解決這些問題:
1.Warning: Cannot find GCC installation directory. g++.exe must be in the path.
2.丟失libstdc+±6.dll、libgcc_s_dw2-1.dll、libwinpthread-1.dll的系統錯誤

Windows端打包發佈步驟,如下:
打開Qt,載入LightUnitTest項目(或其他項目),然後按如圖所示的那樣操作,用Release構建運行項目,然後找“生成的Release目錄裏的release目錄”下的.exe文件,並拷貝,放入D盤下的test文件夾中(隨便放入空文件夾中):
在這裏插入圖片描述
在這裏插入圖片描述
然後打開Windows的所有程序中的Qt的Qt5.8 for Desktop窗口,先輸入“cd /d D:\test”,來到test目錄(或對應的目錄),再輸入“windeployqt LightUnifTest.exe”,用windeployqt工具將.exe要用的Qt的dll文件都拷貝到test目錄中,與.exe文件是同級關係(其中,translations目錄,不需要的話,可以刪除):
在這裏插入圖片描述
【以下是指令的打印結果,沒有出現任何errorOrexception】

D:\test\LightUnifTest.exe 32 bit, releas
Adding Qt5Svg for qsvgicon.dll
Skipping plugin qtvirtualkeyboardplugin.
Direct dependencies: Qt5Core Qt5Gui Qt5W
All dependencies   : Qt5Core Qt5Gui Qt5W
To be deployed     : Qt5Core Qt5Gui Qt5S
Qt5Core.dll is up to date.
Qt5Gui.dll is up to date.
Qt5Svg.dll is up to date.
Qt5Widgets.dll is up to date.
libGLESV2.dll is up to date.
libEGL.dll is up to date.
D3Dcompiler_47.dll is up to date.
opengl32sw.dll is up to date.
Updating libgcc_s_dw2-1.dll.
Updating libstdc++-6.dll.
Updating libwinpthread-1.dll.
Patching Qt5Core.dll...
qsvgicon.dll is up to date.
qgif.dll is up to date.
qicns.dll is up to date.
qico.dll is up to date.
qjpeg.dll is up to date.
qsvg.dll is up to date.
qtga.dll is up to date.
qtiff.dll is up to date.
qwbmp.dll is up to date.
qwebp.dll is up to date.
qwindows.dll is up to date.
Creating qt_ca.qm...
Creating qt_cs.qm...
Creating qt_de.qm...
Creating qt_en.qm...
Creating qt_fi.qm...
Creating qt_fr.qm...
Creating qt_he.qm...
Creating qt_hu.qm...
Creating qt_it.qm...
Creating qt_ja.qm...
Creating qt_ko.qm...
Creating qt_lv.qm...
Creating qt_pl.qm...
Creating qt_ru.qm...
Creating qt_sk.qm...
Creating qt_uk.qm...

將test目錄拷貝,放入另一臺電腦中,雙擊.exe,成功運行!!!【不同的系統不一定都能正常運行,若還出現“提示缺少某些dll”,也許要從網上下載,放入test目錄中!一般按照“打包步驟”做,到運行.exe時,是不會出現問題的!】

問題解決的重要步驟就是:不是用CMD程序,而是用Qt自帶的Qt for Desktop程序

打包後,再簡化打包

下載Enigma Virtual Box,安裝後,使用該工具:
在這裏插入圖片描述
在這裏插入圖片描述
然後點擊Finish按鈕,自動彈出Enigma Virtual Box窗口(或者點擊EVB(Enigma Virtual Box)圖標),導入要打包的.exe文件,再點擊Add按鈕,選擇Add File(s)項,彈出文件管理器,全中所有文件(選到了文件夾也沒有關係,程序只顯示文件【補:我錯了,platforms文件夾很重要,Add完文件後,在這些dll同級處,新建文件夾New Folder,然後取名爲platforms,再然後在該文件夾裏添加qwindows.dll文件】),點擊打開按鈕,接着彈出一個Select Folder窗口,選擇OK按鈕(若已有該目錄,則不會彈出elect Folder窗口),然後在程序的Files中顯示,再接着,選擇Files Options按鈕,彈出的窗口要勾選“Compress Files壓縮多個文件”,然後選擇OK按鈕,窗口消失,接着選擇程序中的Process按鈕,壓縮成功,生成了xxx_boxed.exe,接着可以直接選擇Close按鈕關閉Process窗口,最後,將“LightUnifTest_boxed.exe”拷貝至另一臺電腦,運行正常:
在這裏插入圖片描述
【補:我錯了,platforms文件夾很重要,Add完文件後,在這些dll同級處(即%DEFAULT FOLDER%裏),新建文件夾New Folder,然後取名爲platforms,再然後在該文件夾裏添加qwindows.dll文件,否則會遇到錯誤 This application failed to start because it could not find or load the Qt platform plugin "windows"菜單講述的問題!!!】
在這裏插入圖片描述
補-----------若有文件夾,請這麼做,否則會遇到錯誤警告!---------
在這裏插入圖片描述
補--------------------------------End-----------------------------------
在這裏插入圖片描述
在這裏插入圖片描述

又遇錯誤 This application failed to start because it could not find or load the Qt platform plugin “windows”

這是添加不全面導致的問題:在這裏插入圖片描述
問題表示:缺少了platforms目錄的qwindows.dll文件;
所以,打開Enigma Virtual Box軟件,按照打包後,再簡化打包菜單講述的步驟,
Add File(s)添加文件【platforms目錄的文件一定要添加,其他三個可以不添加(特別是translations目錄,不需要的話,可以刪除),但我都添加了!以防萬一嘛~】,最後點擊Process按鈕,生成LightUnifTest_boxed.exe,再次移到其他電腦,運行正常:
在這裏插入圖片描述
在這裏插入圖片描述
注:要在%DEFAULT FOLDER%裏新建platforms目錄,並添加qwindows.dll文件,最後
才!可!以!點擊Process按鈕!!!
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章