Qt入门教程(2) 直接运行Qt生成的exe报错缺少dll文件

  • A+
所属分类:Qt专栏
摘要

在Qt Creator中写完程序,在Qt Creator中的debug或者release状态下运行程序都是没有问题的,并且会在工程目录下生成对应的debug或者release文件夹,里面存放着生成的exe文件。一般情况下,我们可以直接双击exe文件运行程序,但是,由Qt Creator生成的exe却无法运行,报错缺少dll文件,如缺少QtCore4.dll文件等。

Qt入门教程(2)  直接运行Qt生成的exe报错缺少dll文件

Qt Creator中写完程序,在Qt Creator中的debug或者release状态下运行程序都是没有问题的,并且会在工程目录下生成对应的debug或者release文件夹,里面存放着生成的exe文件。一般情况下,我们可以直接双击exe文件运行程序,但是,由Qt Creator生成的exe却无法运行,报错缺少dll文件,如缺少QtCore4.dll文件等。

这是因为Qt默认情况下是动态编译的,需要dll文件才能正常运行。当我们使用Qt Creator去运行程序的时候,Qt会通过Qt Creator中的设置自动找到dll位置,如果直接打开exe,那么程序会自动去环境变量或者exe所在目录下寻找dll文件。因此,也就产生了以下几种种解决办法。

情况一:qt程序写给自己用

方法1:把缺少的dll文件拷贝到和exe文件所在目录下,这种方式不推荐,因为每次都要拷贝大量dll文件,不方便。

方法2(推荐):设置环境变量,右击“我的电脑”->”属性”->”高级系统设置”->”环境变量”

Qt入门教程(2)  直接运行Qt生成的exe报错缺少dll文件

找到“系统变量”中的“Path”变量,点击“编辑”,“新建”一条路径,将Qt安装路径下的bin文件夹路径放进去。OK,可以运行了。

Qt入门教程(2)  直接运行Qt生成的exe报错缺少dll文件

情况二:发布qt程序给别人用

如果你的程序要发送给别人使用,那么肯定需要将dll文件和exe打包到一起,环境变量的办法肯定不再适用。这时,采用windeployqt+Enigma Virtual Box的方法进行打包。

windeployqt是qt自带的,各个版本的qt都会带有这个工具,安装完qt后会自带该工具,当然,该工具在各个版本中的路径是不一样的,实在不行就用windows全局搜一下吧,该工具主要是将exe中涉及到的有关qt的dll提取到exe所在路径下。Enigma Virtual Box也是一个免费工具,可以去官网下载安装,这个工具主要是将exe、dll等文件打包生成一个单独的exe文件,方便程序的发布和使用。具体使用方法参照https://blog.csdn.net/windsnow1/article/details/78004265

注意事项

1、windeployqt自动提取与qt相关的dll,如果你代码中引入其他第三方库,需要自己手动添加

2、设置好vs的环境变量,否则会报错Warning: Cannot find Visual Studio installation directory, VCINSTALLDIR is not set.。如果你不想设置环境变量,可以采用vs自带的命令行工具”VS2013 开发人员命令提示“执行windeployqt命令。如果执行成功,会将vcredist_x86.exe拷贝到当前目录下

3、可能还是会漏掉一些包,要多在其他电脑上进行测试,运行时会提示缺少某个dll,想办法找到该dll,这个dll你自己的电脑上一般都会有,全局搜下,复制粘贴到exe所在目录下

  • 我的微信
  • weinxin
  • 微信公众号
  • weinxin
阿拉灯aladeng

发表评论

您必须才能发表评论!