1.引言
QT開發完之後,如果直接把exe文件發給別人,是沒法直接用的,因為會提示缺少很多庫,一種方法是把這些庫拷貝出來,一起發過去,但是這樣不方便且文件很大,所以需要一種文件打包發佈的方法。
2.環境
1)QT 5.12.3版本,QT 4.x版本不行。
2)Enigma Virtual Box
enigmaprotector.com/en/downloads.html
3.具體步驟
1)打開一個QT程序,以release方式運行一次。操作如下圖:
2)這時你的工程項目文件夾下,會生成一個關於release的文件夾,打開關於release相關的文件夾,找到該目錄下release目錄下的.exe程序。此時你點擊是運行不成功的。因為缺少QT必要的庫文件。
將這個.exe文件拷貝出來,創建一個單獨的文件夾,放在這個文件夾下,比如桌面的test文件夾裡。
3)在開始菜單中,打開QT命令行窗口
接著輸入命令行,cd /d 路徑(指的是需要打包的exe程序目錄,就是剛才拷貝出來的exe程序所在的目錄),回車
cd /d C:/Users/wangwnexue/Desktop/test
4)輸入如下命令行:windeployqt 程序名 敲擊回車。這一步操作是將所需的庫文件全都拷貝到exe程序的當前文件:
此時,在當前目錄下是可以點擊運行exe程序的,說明庫文件都已經拷貝到當前目錄下了。這時就可以執行將這一堆文件進行打包的操作了,需要使用Enigma Virtual Box工具。
5)打開運行Enigma Virtual Box
第一步選擇上述的exe文件
第二步:添加路徑和文件如下圖。選擇所有文件後,注意是要所有文件和文件夾全部拖進。示意圖如下:
結果如下:
第3步:點擊在【Files Options】中可以選擇是否將文件壓縮:
第4步:最後點擊Process開始打包
生成testweb_boxed.exe就可以直接打開使用了。
4.問題總結
在實際操作過程中遇到了以下幾個問題
1) 提示windeployqt不是內部或外部命令
原因是:一開始我電腦裡用的不是QT5.x版本,所以它是沒有的,裝了新版本的就有了。
2) 提示FaceImport.exe does not seem to be a Qt executable.
原因是:我裝了QT最新版本,但是編譯器用的還是老版本,需要改成最新的,就可以了。