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方法執行,發現還是報錯缺少dll,那么極有可能是你的組件不全,這里以windows下為例子,正確的打包一般不會出現警告,如下圖:
我之前失敗時發現每次打包過程都會警告找不到VS的目錄,我當時就很疑惑我明明是MINGW32bit下編譯的exe為啥打包需要找Qt的VS組件文件,於是我嘗試把Qt的windows下編譯組件全裝上,如下圖:
再次運行1方法執行打包成功!
最后
我提供的方法也只是給大家一個參考,很可能你的問題不在其中,出現了問題國內找不到就去國外找吧