win环境下,用虚拟化工具打包Qt动态编译exe的过程(使用Enigma Virtual Box)

时间:2023-02-22 09:07:59
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://goldlion.blog.51cto.com/4127613/834075

引子

由于 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

win环境下,用虚拟化工具打包Qt动态编译exe的过程(使用Enigma Virtual Box)

优点是:他会找到发布需要最少的dll,有利于我们做体积小的发布包。

缺点是:虽然我们做程序的一般都会把path系统变量配置好。这个工具比较傻,只会在system32下找,并不能找到所有dll的真正路径。

工具2:Process Explorer

这个工具需要你首先运行exe,然后找到exe的进程,就可看到依赖的dll了

win环境下,用虚拟化工具打包Qt动态编译exe的过程(使用Enigma Virtual Box)

优点是:他会找到所有需要的dll的路径

缺点是:会把一些加载的插件dll和其他一些非必需的dll也显示出来。

你可以选择这两个工具同时使用,或者用其中一个。

第三步、使用虚拟化工具打包压缩

本篇文章的主角出场,他叫:Enigma Virtual Box。名字很猛,翻译过来就是:英格码虚拟盒。

这个工具也非常简单

win环境下,用虚拟化工具打包Qt动态编译exe的过程(使用Enigma Virtual Box)

操作如下:1.设置exe 2.拖拽dll到窗口 3.打开文件选项 4.启用压缩

然后我们点“执行封包”就可以了。

最终产品:

win环境下,用虚拟化工具打包Qt动态编译exe的过程(使用Enigma Virtual Box)

参考文献:

http://hi.baidu.com/cyclone/blog/item/d77a86182fb915b84bedbc57.html

附录:关于Qt个平台发布的对话

goldlion(233424570) 11:20:04 
请教个问题
如果用Enigma Virtual Box之类的软件,打包发布Qt动态编译的共享软件,或免费软件
和静态编译相比,怎么样?
人生如戏(921742079) 11:21:18 
你指什么怎么样?
效率?
一样慢
goldlion(233424570) 11:21:32 
恩,综合考虑吧
人生如戏(921742079) 11:22:00 
放自己目录里面,没事
goldlion(233424570) 11:22:34 
我现在主要是对这两者效率差别,没有数值上的概念
哈哈
人生如戏(921742079) 11:23:19 
我试过的,一样慢
不过你要用三方的工具打包,可能会更慢一点
goldlion(233424570) 11:23:41 
是哦
人生如戏(921742079) 11:23:45 
因为三方的工具可能是用来加密的
goldlion(233424570) 11:24:57 
静态编译一般用来发布商业软件吗?对速度要求高的一般是哪些商业软件?
我只是用Qt写一些文本工具,和游戏编辑器,不接触商业发布这块东西= =
人生如戏(921742079) 11:26:03 
没太大区别
linux下,我一般静态 
windows和mac下,动态
mac下qt有打包工具
windows下么,找到dll,放一起就可以了
linux下,很多库有的机器有,有的没有,最好还是静态一下
goldlion(233424570) 11:27:16 

win环境下,用虚拟化工具打包Qt动态编译exe的过程(使用Enigma Virtual Box)非常感谢

本文出自 “做游戏的老G” 博客,请务必保留此出处http://goldlion.blog.51cto.com/4127613/834075

win环境下,用虚拟化工具打包Qt动态编译exe的过程(使用Enigma Virtual Box)的更多相关文章

  1. Win环境下的文件读写

    在win环境下,有许多方法可以对文件进行读写操作,如MFC 中的CFile类,及一些开源的项目如QT中的QFile.开源的好得是可以多平台,而MFC只是微软自家的东西,对于想写跨平台的人,最好不用MF ...

  2. 不需要用任何辅助工具打包Qt应用程序

    不需要用任何辅助工具打包Qt应用程序.方法如下:    生成release文件后,双击里面的exe文件,会弹出一个对话框,里面提示缺少哪一个DLL文件, 然后根据该文件名到你安装QT软件的目录下的/b ...

  3. Android Studio环境下代码混淆+签名打包

    Android Studio环境下代码混淆+签名打包 作者 Mr_冯先生 关注 2016.08.21 01:10 字数 1040 阅读 734评论 5喜欢 34 注:本文使用的Android Stud ...

  4. Win环境下Oracle小数据量数据库的物理备份

    Win环境下Oracle小数据量数据库的物理备份 环境:Windows + Oracle 单实例 数据量:小于20G 重点:需要规划好备份的路径,建议备份文件和数据库文件分别存在不同的存储上. 1.开 ...

  5. 在Win环境下配置java的环境进行开发步骤

    1.下载官方JDK,网址如下 http://www.oracle.com/technetwork/java/javase/downloads/index.html

  6. win 环境下 node.js环境变量

     在win 环境下 node.js环境变量有两种情况:  (1)开发环境(development):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告. ...

  7. win环境下安装配置openCV-4.3.0

    win环境下安装openCV-4.3.0 首先下载 推荐国内镜像 官网太太太慢了 附上 下载地址 下载之后打开exe解压到目录都是常规操作 环境变量的配置 依次打开到系统变量的path 新建一个路径为 ...

  8. Qt程序打包(使用Enigma Virtual Box和BoxedApp Packer封包)

    一.使用单文件封包工具 单文件封包工具,顾名思义就是将可执行文件及其相关依赖打包成单个可执行文件的工具. 这里推荐两个单文件封包工具:Enigma Virtual Box和BoxedApp Packe ...

  9. Hyperledger fablic 1.0 在centos7环境下的安装与部署和动态增加节点

    Hyperledger fablic 1.0 在centos7环境下的安装与部署和动态增加节点 一.安装docker 执行代码如下: curl -sSL https://get.daocloud.io ...

随机推荐

  1. Linux日志不记录问题

    问题原因 查看/var/log/secure发现日志为空,不记录. 查看/var/log/messages发现日志文件过大,然后做了如下操作 mv messages messages-xxxxxxxx ...

  2. Java基础知识强化之IO流笔记54:IO流练习之 LineNumberReader的特有的功能使用

    1. LineNumberReader的特有的功能:  BufferedReader |--LineNumberReader  public int getLineNumber():获得当前行号.   ...

  3. PADS Layout VX.2.3 设置测量精度

    操作系统:Windows 10 x64 工具1:PADS Layout VX.2.3 Pin #7.#8的实际距离是0.65mm,但是测量的结果却是0.7mm.为什么呢?这是由于测量精度的设置不恰当造 ...

  4. 1.2:Properties

    文章著作权归作者所有.转载请联系作者,并在文中注明出处,给出原文链接. 本系列原更新于作者的github博客,这里给出链接. 上一节我们了解了一个Shader的基本结构,这一节,我们从 Propert ...

  5. LoadRunner脚本参数化之设置条件与运行结果说明

    性能测试中为什么需要进行参数化? 1.功能方面:首先要保证脚本的功能完善.可用性.(一般来说,参数化主要针对业务中的具备唯一性的数据.) 2.性能方面:一般来说,如果服务器存在缓存机制,在测试过程中, ...

  6. JS知识整理之 Call&Apply方法

    JavaScript中的函数也是对象,和其他JS对象一样也可以包含方法,其中Call和Apply就是其中比较重要的方法,可以用来间接的调用函数.这两个方法允许显式制定调用所需的this值,也就是说所有 ...

  7. BZOJ.3757.苹果树(树上莫队)

    题面链接 /* 代码正确性不保证..(不过交了SPOJ没WA T了最后一个点) 在DFS序做莫队 当一个点不是另一个点的LCA时,需要加上它们LCA的贡献 */ #include <cmath& ...

  8. leetcode-algorithms-19 Remove Nth Node From End of List

    leetcode-algorithms-19 Remove Nth Node From End of List Given a linked list, remove the n-th node fr ...

  9. mysql增删改查练习

    Mysql增删改查sql语句练习 关于数据库的一些操作: 进入mysql 命令行: mysql -uroot –p 查看所有数据库: show databases; 创建数据库: create dat ...

  10. JS和Java正则表达式验证

    js代码 <script type="text/javascript"> function SubmitCk() { var reg = /^([a-zA-Z0-9]+ ...