现有的开发环境:Windows10 + VS2017 + Qt5.9.9
背景:最近因项目所需,需要使用压缩包,看了一圈儿,发现基于QT 的大都是Zlib+Quazip来搞的。
说明:zlib和quazip这里不再细说,可以百度。简言之:后期编译Quazip是需要依赖Zlib的,所以我们接下来要先编译Zlib,然后编译Quazip。

一、前期准备

1. 下载Zlib源码:https://www.zlib.net/fossils/?C=N;O=D
我下载的版本是:zlib-1.2.11
2. 下载Quazip源码:https://sourceforge.net/projects/quazip/
我下载的版本是:quazip-0.7.3
3. 为了统一管理,我在桌面上建立一个目录(zlib+Quazip),里面存放的是刚才下载的源码,后期编译统一放在此目录中,如图所示:

二、开始编译Zlib

1. 解压zlib,而后切换到zlib+Quazip\zlib-1.2.11\contrib\masmx64,双击执行脚本bld_ml64.bat
2. 此时切换到\zlib+Quazip\zlib-1.2.11\contrib\vstudio\vc14目录下,发现已经有zlibvc.sln了,如图所示:

3. 用VS2017打开*.sln工程,因为我开发的项目是基于64位release版开发的,所以我在VS中进行以下配置,如图所示:

4.此时,我们直接右键编译zlibvc项目即可,如下图所示:

5.好了,编译完成,库也生成了,如下图所示:

6.至此,zlib的编译就结束了,接下来我们继续编译Quazip。好,在编译之前,我们需要做点准备,首先,我们在一开始建立的目录下新建一个子目录zlib,在此目录之下再新建3个子目录,分别是include,lib,dll,并将zlib.h,zconf.h拷到include下,刚才生成的lib拷到lib目录下,刚才生成的dll拷到dll目录下,最终如下图所示:

三、编译Quazip

1. 首先解压,解压后的效果如下图所示:

2. 此时,网上大部分人的做法是 双击quazip.pro打开Qt工程,但实际上此处的quazip.pro是一个含有子工程的项目,我们没必要去打开它。而是进一步直接进入到quazip目录下,打开此目录下的quazip.pro工程,如图所示:


3. 此时我们将之前 二-6 中的zlib目录整体拷贝到当前目录下,当前目录指的就是上述第2小步中的quazip目录,如图所示:

4. 最后,我们在打开的pro文件中找到win32{ … }, 并在其末尾追加

    INCLUDEPATH += $$PWD/zlib/includeLIBS += -L$$PWD/zlib/lib -lzlibwapi

两句话,如下图所示:

5. 之后直接编译即可,注意:我用的是MSVC2015-64-release版编译器编译的,因为我的项目就是基于64位release开发的。此时,Quazip也已经编译完毕了,如下图所示:

最终生成了quazip.lib和quazip.dll两个库。

四、使用Quazip

好,为了能够使用Quazip,我们需要做以下准备:
1. 新建一个目录,比如Quazip,然后再在此目录下新建include, dll, lib三个子目录,
(1) 对于include目录,我们需要将zlib中的zlib.h, zconf.h(在解压后的zlib中可找到)和quazip中的所有头文件(见下图)拷贝到它中去。


(2) 对于dll,我们需要将编译zlib生成的zlibwapi.dll和编译Quazip生成的quazip.dll拷贝到它中去。
(3) 对于lib,我们需要将编译Quazip生成的quazip.lib拷贝到它中去。
最终效果如图所示:

2. 最后,我们将新建的Quazip目录拷贝到Qt的工程目录下(*.pro所在目录),如图所示:

然后在pro文件中追加以下代码:

INCLUDEPATH += $$PWD/Quazip/include
LIBS += -L$$PWD/Quazip/lib -lquazip

3. 最后,我们在cpp中编写以下代码:

#include "quazip.h"
#include "quazipnewinfo.h"
#include "quazipfile.h"//
void MainWindow::on_pushButton_clicked()
{QString password("111");QuaZip newZip(QString("./111.zip"));                            // 将要打包生成的zip压缩包(.zip文件)if(newZip.open(QuaZip::mdCreate)) {QuaZipFile file(&newZip);                                   // 压缩包内的文件QuaZipNewInfo info(QString("test.txt"), QString("./"));     // 压缩包内的文件信息if(file.open(QIODevice::WriteOnly, info, password.toUtf8().constData(), 0, 8)) {QFile _file(QString("./test.txt"));if(_file.open(QIODevice::ReadOnly)) {file.write(_file.readAll());_file.close();} else {qDebug() << "file not found.";}file.close();}}
}

4. 此时运行程序,发生程序无报错,但是直接崩溃了。此时我们需要将上述Quazip目录下的dll目录下的两个动态库dll放到exe目录下,此时运行程序,一切便OK了。

Quazip的编译及使用,保姆级教程相关推荐

  1. FreeCAD-0.19源码的编译配置(保姆级教程)

    一.素材工具: 1)Visual Studio 2019: Visual Studio 2019 社区版 – 下载最新免费版本 2)CMake: Download | CMake 3)(依赖库)Lib ...

  2. 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)...

    写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...

  3. Android反编译工具的使用(保姆级教程)

    Android反编译工具的使用(保姆级教程) 网上关于Android反编译的文章很多,但是好多都比较杂,就打算自己写一下,顺便也能加深一下印象. 一.常用反编译文件的介绍 apktool apktoo ...

  4. 判断是不是链接 正则_Python 正则表达式 保姆级教程,小学生都看得懂!!

    ~点击 蓝字 关注,获取更多资源~ 0 前言 上一篇文章,2020,还不会正则???,和小伙伴们一起学习了 Python 中的正则表达式,读完之后,总感觉少了点什么东西,无法尽兴?就好像爱你们的心少了 ...

  5. 天才少年稚晖君 | 【保姆级教程】个人深度学习工作站配置指南

    天才少年稚晖君 | [保姆级教程]个人深度学习工作站配置指南 来源:https://zhuanlan.zhihu.com/p/336429888 0. 前言 工作原因一直想配置一台自己的深度学习工作站 ...

  6. 保姆级教程:手把手教你搭建个人网站

    保姆级教程:手把手教你搭建个人网站 前言 准备与搭建 1.Git管理工具的下载与安装 2.nodejs环境安装 3.hexo博客框架下载 npm换国内源 使用npm下载hexo博客框架 初始化mybl ...

  7. 保姆级教程带你在VMware中安装Linux Debinan操作系统

    保姆级教程带你在VMware中安装Linux Debinan操作系统 文章目录 保姆级教程带你在VMware中安装Linux Debinan操作系统 1.Debinan系统介绍 2.Debinan操作 ...

  8. 保姆级教程!将 Vim 打造一个 IDE (Python 篇)

    从上周开始我就开始折腾 ,搞了一下 Vim IDE for Python & Go,我将整个搭建的过程整理成本篇文章分享出来,本篇是 Python 版本的保姆级教程,实际上我还写了 Go 版本 ...

  9. 保姆级教程:Linux(Ubuntu 18.04)下VSCode配置与嵌入式开发平台X2000_Halley5调试环境搭建

    保姆级教程:Linux(Ubuntu 18.04)下VSCode配置与嵌入式开发平台X2000_Halley5调试环境搭建 写在前面 配置VSCode的编译环境 配置VSCode的gdb调试环境 配置 ...

  10. ESP 保姆级教程 基础篇 —— 环境安装、NodeMcu引脚介绍

    快速导读 1.安装 Arduino IDE -- 1.8.13 2.安装 ESP8266 -- 2.7.4 3.配置Arduino IDE 首选项 4.硬件开发板 -- ESP8266 NodeMcu ...

最新文章

  1. 大数据开发实战:Hive表DDL和DML
  2. notepad php必用功能,Notepad中值得一提的特性
  3. Qt中用QuaZip来压缩和解压缩文件
  4. CMOS与BIOS的区别
  5. Linux下的各文件夹的作用(转)
  6. numpy 中np.max--求序列的最大值和np.maximum--X和Y逐位进行比较,选择最大值
  7. 2017百度之星初赛B场第一题Chess--简单杨辉三角问题
  8. VS2010与Windows7共舞:对库进行编程
  9. 中判断字符串是否为空_自己动手编写VBA代码,判断一个工作表是否为空,然后删除它...
  10. cad填充图案乱理石_CAD填充图案文件在哪个文件夹里?
  11. 计算机组成原理 第二版 课后答案 (唐朔飞) 1~8章
  12. power query时间函数(思维导图)
  13. 易思ESPCMS企业建站管理系统 P8.21120101 稳定版
  14. [Power Query]:自动提取自定义一周的数据
  15. 公司性格测试,来一发
  16. 【Docker学习】【问题解决】Client.Timeout exceeded while awaiting headers
  17. SIP协议及其简单介绍
  18. 管理的基础知识都包含哪些内容
  19. Perceptron(感知机与径向基)
  20. 手机无网状态下获取经纬度,离线定位的方法。

热门文章

  1. 今天朋友20岁生日,标记下
  2. 深度 Windows Vista Ultimate GDH 精简CD 1.0 简体中文版
  3. html 按键的touch,TOUCH炫舞按键操作技巧攻略大全
  4. mysql 复杂行转列_有趣的SQL(4) 行转列的复杂应用和优化思想
  5. 网站微信扫码登录总结
  6. 熟食陈列柜的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  7. 程序员如何在工作后找到女朋友?
  8. 注册商标和不注册商标有什么区别?
  9. 计算机学院学生会招新标语,学生会招新标语
  10. 好心情:那个总爱逗我笑的朋友,得了抑郁症