简述
在windows下开发的qt程序,想在其他windows计算机上运行,而那个计算机没有qt环境,执行时候会报错各种dll找不到,那么就需要将自己开发的qt程序和用到的库打包。
打包
这里先编译一个Release版本的可执行程序,编译前需要设置为Release。生成目录在下面构建目录中
创建一个单独的文件夹这个文件夹可以在任何位置
我创建了一个out文件夹
将Release中的可执行文件拷贝到out中
然后打开命令行,开始->搜索qt->选择应用->找到自己要打开的命令行,注意这个要和编译时候使用的编译器一致(通过上面的图可以看到我构建时候使用的是MSVC2017)所以这里我选择打开MSVC这个命令行
切换到out目录执行
windeployqt 自己的可执行文件.exe (我这里执行的是windeployqt navi_tool.exe)
windeployqt是qt自带的不需要单独下载
我们运行之前Release中的可执行程序直接报错
运行我们out目录下打完包的可执行程序可以正常运行了
如果想在其他计算机上运行只需要将整个out目录都发送给那个计算机就可以正常运行了
打包进阶
如果你觉得out这个目录用着还是不方便,只想给其他计算机一个可执行文件就能执行,那么就需要用到Enigma Virtual Box,Enigma Virtual Box是软件虚拟化工具,它可以将多个文件封装到应用程序主文件。
百度搜索下载 Enigma Virtual Box
安装 Enigma Virtual Box
找到enigmavb.exe执行
这里添加需要的库就是整个out目录下的东西,这里直接选择Add Folder然后选择out目录如下图
添加完可执行文件和需要的库后点击右下角的Process就可以进行封装了,会将所需要的封装到navi_tool_boxed.exe(前面设置的Enter Output File Name)中,然后你在out目录下会看见一个navi_tool_boxed.exe这个可执行文件会比之前的navi_tool.exe大一些,因为它包含所需的库,直接将navi_tool_boxed.exe给其他计算机直接运行发现可以运行了。
笔者这个qt可执行程序使用了QtWebEngine功能,使用Enigma Virtual Box封装成一个可执行程序后发现网页功能不好用了,这里有知道怎么解决的麻烦留言或者私信我,谢谢!!!