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


    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。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

    优点是:他会找到发布需要最少的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个平台发布的对话 

    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 

    非常感谢 

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

  • 相关阅读:
    ES6新特性概览
    ECMAScript 位运算符
    jQuery源码分析系列(39) : 动画队列
    浏览器的工作原理:新式网络浏览器幕后揭秘
    jQuery源码分析系列(38) : 队列操作
    正则表达式30分钟入门教程
    jQuery源码分析系列(37) : Ajax 总结
    jQuery源码分析系列(36) : Ajax
    jQuery源码分析系列(35) : Ajax
    jQuery源码分析系列(34) : Ajax
  • 原文地址:https://www.cnblogs.com/findumars/p/6251013.html
Copyright © 2020-2023  润新知