Bootstrap

【QT】解决生成的exe文件出现“无法定位程序入口”或“找不到xxx.dll”的问题

【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就好了~

;