qt打包软件放在其他电脑运行
QT开发起来很方便,但是打包起来相比C#开发或者VC开发的软件大一些,因为使用qt编写的代码要是要有一些依赖的库的。
那当我们使用qt开发完一款软件以后如何打包放在其他电脑运行?我这里把我碰到的问题以及解决办法列一下。首先说一下我使用的QT版本是5.11 Mingw编译器,如果使用MSVC编译器版本的可能最后依赖的库会略有不同,请自行测试。
qt中正常我们调试编写代码的时候都是用的debug模式,如下图:
但是,当我们调试完了,要发布的时候,要把这个Debug模式切换到Release状态下。你要非用Debug下的生成的exe也行,但是当年把所有的依赖包凑齐,那一个小小的窗口软件几百兆大小吓死你。所以我们发布时候必须用Release。编译以后我们找到Release文件夹:
该目录下有个hello.exe 也就是Release版本的可执行应用程序。这时候双击发现是运行不了了,因为还缺少依赖库。我们把hello.exe拷贝出来放在一个hello文件夹下。这时候我们需要用到qt自带的一个工具windeployqt来把依赖的库自动拷贝过来。在hello文件夹下,按住Shift点鼠标右键,找到在此处打开powershell窗口,输入如下指令:
这时候你会发现出现错误,找不到windeployqt命令,那是因为没有添加环境变量,如下所示:
该目录一般在qt的安装目录下,根据你的qt安装目录去找,但是记得要选择mingw 32位的下的bin,不要选成64位的了。这时候关闭之前的powershell重新打开执行windeployqt hello.exe,执行完后会发现hello文件夹下多了很多dll文件和几个文件夹。
好了,这个时候你就可以把该文件夹hello拷贝到一台没有安装过qt的电脑上做个测试,看可否运行。我真是的一个qt软件程序也是用这个流程进行,但是拷贝到其他电脑上以后发现还是运行不了,还缺少几个文件,如下图所示:这三个文件我又从qt的安装目录进行了搜索找了出来,但是记好如果你的软件也需要这些依赖库请去32位的文件夹下找,64位下面可能也有同样的文件,但是却会导致软件运行不起来。