【QT】解决生成的exe文件出现“无法定位程序入口”或“找不到xxx.dll”的问题
【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就好了~