「博客搬家」 原地址: CSDN 原發表時間: 2016-06-04
本文討論在 Windows 平臺下編譯成功的 Qt 程序,如何在未配置 Qt 開發環境的 Windows 平臺下獨立運行的方法。php
通過驗證發現,在 Ubuntu 平臺下編譯成功的程序可在未安裝 Qt 開發環境下的 Ubuntu16.04 中運行,因此,本文僅討論,在 Windows 平臺下編譯成功的 Qt 程序,在未配置 Qt 開發環境的 Windows 平臺下獨立運行的方法。html
如若想要發佈程序,在 IDE 中編譯必定要選擇 release
而不是 debug
,編譯成 release 版本相比於 debug 版本,程序體積「可執行文件和 dll 文件」大大減少;c++
編譯爲 release 版本以後,找到生成的目錄,其中只有 exe 擴展名的可執行文件是有用的。windows
直接打開可執行文件,會提示找不到 dll 文件,解決方法以下:app
在 cmd 中,運行以下命令:工具
<Qt目錄>\Qt5.5.1\5.5\mingw492_32\bin\windeployqt.exe <*.exe>
程序會找到該可執行程序所需的全部依賴文件,並集成進該可執行文件所在的目錄:ui
有時程序會提示找不到所需的 gcc.exe,只須要將隨 Qt 安裝的 mingw 的 bin 目錄添加到系統的環境變量中便可。以後執行可執行文件便可成功運行。spa
這裏,咱們能夠用 Process Explore 來獲取所依賴的 dll 文件「Dependency Walker軟件也是不錯的選擇」.net
打開 procexp.exe,選擇菜單 -> View -> Lower Pane View ->DLLs 勾選此選項,顯示 dll 窗口。插件
在 Qt Creater 中,調試運行要發佈的程序,在 Process Explore 中,找到該 exe 文件並選中,在下面就看到依賴的 dll 了。
Process Explore尋找依賴
Dependency Walker尋找依賴
系統目錄下的,通常不用關心,按 Path 排序,尋找 Qt 目錄及 mingw 目錄下的 dll 文件,將這些 dll 拷貝至發佈程序目錄下。
以 mingw 版 Qt 爲例「VS版本安裝目錄有些許不一樣」,dll 文件在 Qt 安裝目錄下:
<Qt安裝目錄>\Qt5.5.1\5.5\mingw492_32\bin
找到全部所需的 dll 文件,複製到要發佈程序的目錄下
例如,本程序須要以下依賴:
打包工具,這裏選用 Enigma Virtual Box,運行軟件,選擇發佈程序的可執行文件路徑以及生成文件的路徑,左下角的「添加」按鈕添加全部的 dll 文件,不包含剛纔選擇的 exe 文件。點擊右下角的「文件選項」,選中「啓用文件虛擬化」以及「壓縮文件」,如圖所示:
最後點擊右下角的「執行封包」,生成的 exe 文件的容量小了不少,而且這是一個純粹的「綠色軟件」,直接複製就能在任何存儲介質上運行了。
根據不一樣的程序,須要不一樣的插件庫。例如 QT_DIR/plugins/*/*.dll
,須要將 platforms/*.dll
, accessible/*.dll
的文件結構保留,放在你所編譯的程序所在目錄,例如:
plugins/platforms/qwindows.dll plugins/accessible/qtaccessiblewidgets.dll