【QT】解決生成的exe檔案出現“無法定位程式入口”或“找不到xxx.dll”的問題
零、問題
使用QT編譯好專案後,想直接在檔案資源管理器中執行exe程式或想分享出去給別人使用發現出現如下問題:
- 系統錯誤:找不到xxx.dll。
- 無法找到入口:無法定位程式輸入點xxx。
下文將介紹如何解決以上兩個問題。
壹、環境介紹
QT的安裝路徑為D:\Qt
。
我這邊生成的exe檔案為一個Camera.exe
,放在D:\Qt\project\swap
目錄下,程式比較簡單,故只有一個exe檔案。
壹、解決“找不到xxx.dll”
在QT的安裝目錄下的版本號\mingw_64\bin
目錄下有一個windeployqt.exe
程式,例如我的路徑為:
D:\Qt\6.2.4\mingw_64\bin\windeployqt.exe
我們在生成的exe所在的資料夾中開啟cmd視窗(提示符前面是你的exe程式所在的資料夾),輸入如下命令,此程式會幫我們把一些exe執行需要用到的檔案複製到當前目錄下(前面的為windeployqt.exe
的路徑,後面的Camera.exe
為你的exe程式檔名):
D:\Qt\6.2.4\mingw_64\bin\windeployqt.exe Camera.exe
會發現目錄中多了一些檔案,到時候分享給其他人使用需要把這些檔案一起跟exe打包,這樣可以解決第一個問題。
叄、解決“無法定位程式輸入點xxx”
此時我們要找到QT安裝目錄下的版本號\mingw_64\bin
目錄(就windeployqt.exe
程式所在目錄),把裡面的一些dll檔案複製到你的exe程式所在的目錄中即可,一般是複製這幾個:
d3dcompiler_47.dll
libgcc_s_seh-1.dll
libstdc++-6.dll
libwinpthread-1.dll
不一定全用到,當然為了省事可以直接全複製過來也沒關係,要是追求最小安裝包,可以一個一個嘗試,直到找到真正需要的那個dll。
像我這邊就只需要複製一個libstdc++-6.dll
就可以了。
肆、總結
總之就是去QT安裝目錄下的版本號\mingw_64\bin
目錄裡複製dll就好了~