用 Enigma Virtual Box 把 Qt 程序压成单文件 EXE——从编译、收集依赖到一键封包
关键词:Qt、windeployqt、Enigma Virtual Box、单文件、绿色软件
为什么要打成单文件?
- 传统做法:用
windeployqt
把依赖拷进 release 目录,发给用户一个文件夹,文件又多又乱。 - 理想做法:把整个目录压成一个 .exe,双击即跑,拷贝即走,干净清爽。
Enigma Virtual Box(下文简称 EVB)就是干这件事的免费利器。官方下载:https://enigmaprotector.com
🚀 打包全流程(图文详解)
📂 第一步:准备 QT 程序
-
使用 Release 模式 编译程序
bash
qmake && make release
-
在编译目录找到生成的
.exe
文件(如MyApp.exe
)
📦 第二步:收集依赖文件
-
使用 Qt 自带的部署工具:
bash
windeployqt --release MyApp.exe
-
手动补充常见缺失 DLL:
路径:QT安装路径 C:\Qt\Qt5.14.1\5.14.1\mingw73_32\bin
libgcc_s_dw2-1.dll
libstdc++-6.dll
libwinpthread-1.dll
opengl32sw.dll
🌐 第三步:新建一个空白文档
在文件资源管理器上任意位置新建一个空白文件夹(文件夹名最好是英文),我的是Demo,找到自己的工程所在文件夹,里面的build-uart-Desktop_Qt_5_14_1_MinGW_32_bit-Release文件夹,将之前编译的release文件夹里面的.exe文件拷贝到自己建Demo文件夹中。
🚀 第四步:在这里一键收集依赖库
点击鼠标右键进入终端。
在终端中执行:**windeployqt MyApp.exe`**指令
(windeployqt + 你的exe文件名),我这里执行windeployqt32 uart.exe是因为我的软件有的是32位,有的是64位,我为了区分,才这样弄。
执行完后,刚刚新建的Demo文件夹会出现相关目录。 Qt5Core.dll、platforms 目录、各种 qml/QtQuick 目录等
🛠️ 第五步:配置 Enigma Virtual Box
打开Enigma Virtual Box软件。
EVB 主界面很简洁,只有两个必填项:
- ① 输入文件:选
MyApp.exe
- ② 输出文件:自动生成
MyApp_boxed.exe
,可改路径。
选择完文件后需要添加依赖库,按照图片中的顺序。
这里需要选择刚刚建的Demo文件夹。弹出的框直接点击确定。
到这里就打包完成了,打包完成的文件也会在刚才的文件夹里,如果在这里面双击打不开,可以按照上面的方法把那几个.dll文件粘进来,这样就完成了QT程序的打包。
如果本文帮到了你,欢迎点赞/收藏;打包过程中遇到别的坑,欢迎留言交流!