摘要
在Qt Creator中写完程序,在Qt Creator中的debug或者release状态下运行程序都是没有问题的,并且会在工程目录下生成对应的debug或者release文件夹,里面存放着生成的exe文件。一般情况下,我们可以直接双击exe文件运行程序,但是,由Qt Creator生成的exe却无法运行,报错缺少dll文件,如缺少QtCore4.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(推荐):设置环境变量,右击“我的电脑”->”属性”->”高级系统设置”->”环境变量”
找到“系统变量”中的“Path”变量,点击“编辑”,“新建”一条路径,将Qt安装路径下的bin文件夹路径放进去。OK,可以运行了。
情况二:发布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所在目录下