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

零、问题

使用QT编译好项目后,想直接在文件资源管理器中运行exe程序或想分享出去给别人使用发现出现如下问题:

  1. 系统错误:找不到xxx.dll。
  2. 无法找到入口:无法定位程序输入点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

叁、解决“无法定位程序输入点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就好了~