Qt5使用Qt自帶的windeployqt打包程式教程很多,其過程也很簡單,但是大部分人在打包過程中會出現提示缺少dll,或者錯誤0xXXXX等問題,網上各種說法,我測試過基本都不怎麼正確,這裡寫一下我的解決方法。
經典錯誤
- 缺少dll
- 無法啟動程式報錯
解決方法
1. windeployqt版本要和Qt生成的exe版本一致。
我這裡的是MINGW_32bit
版本,如下圖:
所以也要進入第一個控制檯[Qt5.9.9 (MINGW 5.3.0-32bit)
]環境下用windeployqt
打包!
注意這裡不要新增Qt\Qt5.9.9\5.9.9\mingw53_32\bin
的全域性變數在CMD
介面下執行windeployqt
,原因有兩個:1.各種全域性變數下不同平臺版本的windeployqt
變數路徑會混亂,使用windeployqt
版本可能不對應,同時即使你只新增一個對應的全域性變數在CMD
介面下執行windeployqt
也可能會缺少dll。2. 新增全域性變數下,即使缺少Qt的dll也能執行,會讓你以為dll已經打全了,但是實際上你去了相應的全域性環境變數或者在其他電腦上一樣報錯。
2. Qt元件不全。
如果你嚴格按照1.0方法執行,發現還是報錯缺少dll,那麼極有可能是你的元件不全,這裡以windows下為例子,正確的打包一般不會出現警告,如下圖:
我之前失敗發現每次過程會警告找不到VS的目錄,我很疑惑我是MINGW32bit下編譯的為啥需要找VS元件檔案,於是我嘗試把Qt的windows下編譯元件全裝上,如下圖:
再次執行1.0方法執行打包成功!