win环境下,用虚拟化工具打包Qt动态编译exe的过程(使用Enigma Virtual Box)
引子
由于 AnimatePacker的打包发布用的是Qt动态编译,且为了给没有Qt环境的朋友使用,会集成一些dll,所以造成了一些不便。(策划和美术都喜欢一个exe的东西吧= =)
个人对Qt静态编译不怎么感冒,大约是因为比较折腾,所以一直没弄。
近几年各种虚拟化工具迅猛发展,易用性和稳定性越来越好。最近尝试了一下,可以用,也比较简单,所以整理一下。对于我们开发一些常用的文本工具以及游戏编辑器来说,足够用了。
注意:我的环境是指windows下,如果你在其他环境下使用,本篇末尾有一个和Qt开发群友人生如戏(921742079)的对话,可以参考。
第一步、编译你的exe
使用release模式,动态编译exe,这个没得说,正常Qt开发的操作。
第二步、获取依赖的dll
在windows下面,动态发布Qt程序,需要获取你需要的dll,然后和exe放到一起发布
有两个工具可以获取你需要的dll
工具1:Dependency Walker
打开此工具直接将你的exe拖拽进去即可,然后窗口中会显示exe依赖的dll

优点是:他会找到发布需要最少的dll,有利于我们做体积小的发布包。
缺点是:虽然我们做程序的一般都会把path系统变量配置好。这个工具比较傻,只会在system32下找,并不能找到所有dll的真正路径。
工具2:Process Explorer
这个工具需要你首先运行exe,然后找到exe的进程,就可看到依赖的dll了

优点是:他会找到所有需要的dll的路径
缺点是:会把一些加载的插件dll和其他一些非必需的dll也显示出来。
你可以选择这两个工具同时使用,或者用其中一个。
第三步、使用虚拟化工具打包压缩
本篇文章的主角出场,他叫:Enigma Virtual Box。名字很猛,翻译过来就是:英格码虚拟盒。
这个工具也非常简单

操作如下:1.设置exe 2.拖拽dll到窗口 3.打开文件选项 4.启用压缩
然后我们点“执行封包”就可以了。
最终产品:

参考文献:
http://hi.baidu.com/cyclone/blog/item/d77a86182fb915b84bedbc57.html
附录:关于Qt个平台发布的对话
请教个问题
如果用Enigma Virtual Box之类的软件,打包发布Qt动态编译的共享软件,或免费软件
你指什么怎么样?
效率?
一样慢
恩,综合考虑吧
放自己目录里面,没事
我现在主要是对这两者效率差别,没有数值上的概念
哈哈
我试过的,一样慢
不过你要用三方的工具打包,可能会更慢一点
是哦
因为三方的工具可能是用来加密的
静态编译一般用来发布商业软件吗?对速度要求高的一般是哪些商业软件?
我只是用Qt写一些文本工具,和游戏编辑器,不接触商业发布这块东西= =
没太大区别
linux下,我一般静态
windows和mac下,动态
mac下qt有打包工具
windows下么,找到dll,放一起就可以了
linux下,很多库有的机器有,有的没有,最好还是静态一下
非常感谢
本文出自 “做游戏的老G” 博客,请务必保留此出处http://goldlion.blog.51cto.com/4127613/834075
win环境下,用虚拟化工具打包Qt动态编译exe的过程(使用Enigma Virtual Box)的更多相关文章
- Win环境下的文件读写
在win环境下,有许多方法可以对文件进行读写操作,如MFC 中的CFile类,及一些开源的项目如QT中的QFile.开源的好得是可以多平台,而MFC只是微软自家的东西,对于想写跨平台的人,最好不用MF ...
- 不需要用任何辅助工具打包Qt应用程序
不需要用任何辅助工具打包Qt应用程序.方法如下: 生成release文件后,双击里面的exe文件,会弹出一个对话框,里面提示缺少哪一个DLL文件, 然后根据该文件名到你安装QT软件的目录下的/b ...
- Android Studio环境下代码混淆+签名打包
Android Studio环境下代码混淆+签名打包 作者 Mr_冯先生 关注 2016.08.21 01:10 字数 1040 阅读 734评论 5喜欢 34 注:本文使用的Android Stud ...
- Win环境下Oracle小数据量数据库的物理备份
Win环境下Oracle小数据量数据库的物理备份 环境:Windows + Oracle 单实例 数据量:小于20G 重点:需要规划好备份的路径,建议备份文件和数据库文件分别存在不同的存储上. 1.开 ...
- 在Win环境下配置java的环境进行开发步骤
1.下载官方JDK,网址如下 http://www.oracle.com/technetwork/java/javase/downloads/index.html
- win 环境下 node.js环境变量
在win 环境下 node.js环境变量有两种情况: (1)开发环境(development):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告. ...
- win环境下安装配置openCV-4.3.0
win环境下安装openCV-4.3.0 首先下载 推荐国内镜像 官网太太太慢了 附上 下载地址 下载之后打开exe解压到目录都是常规操作 环境变量的配置 依次打开到系统变量的path 新建一个路径为 ...
- Qt程序打包(使用Enigma Virtual Box和BoxedApp Packer封包)
一.使用单文件封包工具 单文件封包工具,顾名思义就是将可执行文件及其相关依赖打包成单个可执行文件的工具. 这里推荐两个单文件封包工具:Enigma Virtual Box和BoxedApp Packe ...
- Hyperledger fablic 1.0 在centos7环境下的安装与部署和动态增加节点
Hyperledger fablic 1.0 在centos7环境下的安装与部署和动态增加节点 一.安装docker 执行代码如下: curl -sSL https://get.daocloud.io ...
随机推荐
- HTTP基础01--web与互联网基础
WWW构建技术: 把SGML(标准通用标记语言)作为页面文本标记的HTML(超文本标记语言): 作为文档传递协议的HTTP(超文本传输协议): //严谨应该称为“超文本转移协议”: 指定文档所在地址 ...
- DFS ZOJ 1002/HDOJ 1045 Fire Net
题目传送门 /* 题意:在一个矩阵里放炮台,满足行列最多只有一个炮台,除非有墙(X)相隔,问最多能放多少个炮台 搜索(DFS):数据小,4 * 4可以用DFS,从(0,0)开始出发,往(n-1,n-1 ...
- HDU 2653 (记忆化BFS搜索+优先队列)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2653 题目大意:迷宫中有普通点和陷阱.其中普通点可以走可以飞,但是陷阱只能飞.走耗时1,飞耗时2.但 ...
- ios batchRequest
https://github.com/facebook/pop AF 为什么要用 一个线程去进行 1.这有什么好处 因为其生产额外的线程也要 开销的 asi 和af都是这么去做的 2.本身所 ...
- 【BZOJ】1012: [JSOI2008]最大数maxnumber(树状数组+rmq)
http://www.lydsy.com/JudgeOnline/problem.php?id=1012 树状数组原来我只懂得sum和add的操作,今天才知道可以有求区间最值的操作,我学习了一下写了个 ...
- 解决EasyUI-Datagrid和LinqToEntity结合应用时排序问题
我们在做WEB页面时,时常会选择JQuery框架的Datagrid,如Ext.EasyUI.Flexigrid,数据访问则采用LinqToSQL或LinqToEntity.UI用Jquery框架的目的 ...
- 什么是J2EE,包括哪些规范!
J2EE平台由一整套服务(Services).应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单 ...
- Qt OpenCV Support Image Type 支持读写的图像格式
Qt 支持的图片格式如下: Format Description Qt's support BMP Windows Bitmap Read/write GIF Graphic Interchange ...
- 启用VTX技术支持启动android的虚拟机 - 报错
第一次启用VTX技术支持启动android的虚拟机,启动时提示如下错误: Starting emulator for AVD 'AVD_for_Android_TV_1080p_by_Google'e ...
- Eclipse代码提示功能是不是利用反射
希望看到这个空文章的你能够说说你的意见………………