【QT】解決生成的exe檔案出現“無法定位程式入口”或“找不到xxx.dll”的問題

清风来叙發表於2024-11-13

【QT】解決生成的exe檔案出現“無法定位程式入口”或“找不到xxx.dll”的問題

零、問題

使用QT編譯好專案後,想直接在檔案資源管理器中執行exe程式或想分享出去給別人使用發現出現如下問題:

  1. 系統錯誤:找不到xxx.dll。
    系統錯誤:找不到xxx.dll
  2. 無法找到入口:無法定位程式輸入點xxx。
    無法找到入口:無法定位程式輸入點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

windeployqt命令

會發現目錄中多了一些檔案,到時候分享給其他人使用需要把這些檔案一起跟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就好了~

相關文章