Quazip的编译及使用,保姆级教程
现有的开发环境: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的编译及使用,保姆级教程相关推荐
- FreeCAD-0.19源码的编译配置(保姆级教程)
一.素材工具: 1)Visual Studio 2019: Visual Studio 2019 社区版 – 下载最新免费版本 2)CMake: Download | CMake 3)(依赖库)Lib ...
- 保姆级教程——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版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
- Android反编译工具的使用(保姆级教程)
Android反编译工具的使用(保姆级教程) 网上关于Android反编译的文章很多,但是好多都比较杂,就打算自己写一下,顺便也能加深一下印象. 一.常用反编译文件的介绍 apktool apktoo ...
- 判断是不是链接 正则_Python 正则表达式 保姆级教程,小学生都看得懂!!
~点击 蓝字 关注,获取更多资源~ 0 前言 上一篇文章,2020,还不会正则???,和小伙伴们一起学习了 Python 中的正则表达式,读完之后,总感觉少了点什么东西,无法尽兴?就好像爱你们的心少了 ...
- 天才少年稚晖君 | 【保姆级教程】个人深度学习工作站配置指南
天才少年稚晖君 | [保姆级教程]个人深度学习工作站配置指南 来源:https://zhuanlan.zhihu.com/p/336429888 0. 前言 工作原因一直想配置一台自己的深度学习工作站 ...
- 保姆级教程:手把手教你搭建个人网站
保姆级教程:手把手教你搭建个人网站 前言 准备与搭建 1.Git管理工具的下载与安装 2.nodejs环境安装 3.hexo博客框架下载 npm换国内源 使用npm下载hexo博客框架 初始化mybl ...
- 保姆级教程带你在VMware中安装Linux Debinan操作系统
保姆级教程带你在VMware中安装Linux Debinan操作系统 文章目录 保姆级教程带你在VMware中安装Linux Debinan操作系统 1.Debinan系统介绍 2.Debinan操作 ...
- 保姆级教程!将 Vim 打造一个 IDE (Python 篇)
从上周开始我就开始折腾 ,搞了一下 Vim IDE for Python & Go,我将整个搭建的过程整理成本篇文章分享出来,本篇是 Python 版本的保姆级教程,实际上我还写了 Go 版本 ...
- 保姆级教程:Linux(Ubuntu 18.04)下VSCode配置与嵌入式开发平台X2000_Halley5调试环境搭建
保姆级教程:Linux(Ubuntu 18.04)下VSCode配置与嵌入式开发平台X2000_Halley5调试环境搭建 写在前面 配置VSCode的编译环境 配置VSCode的gdb调试环境 配置 ...
- ESP 保姆级教程 基础篇 —— 环境安装、NodeMcu引脚介绍
快速导读 1.安装 Arduino IDE -- 1.8.13 2.安装 ESP8266 -- 2.7.4 3.配置Arduino IDE 首选项 4.硬件开发板 -- ESP8266 NodeMcu ...
最新文章
- 大数据开发实战:Hive表DDL和DML
- notepad php必用功能,Notepad中值得一提的特性
- Qt中用QuaZip来压缩和解压缩文件
- CMOS与BIOS的区别
- Linux下的各文件夹的作用(转)
- numpy 中np.max--求序列的最大值和np.maximum--X和Y逐位进行比较,选择最大值
- 2017百度之星初赛B场第一题Chess--简单杨辉三角问题
- VS2010与Windows7共舞:对库进行编程
- 中判断字符串是否为空_自己动手编写VBA代码,判断一个工作表是否为空,然后删除它...
- cad填充图案乱理石_CAD填充图案文件在哪个文件夹里?
- 计算机组成原理 第二版 课后答案 (唐朔飞) 1~8章
- power query时间函数(思维导图)
- 易思ESPCMS企业建站管理系统 P8.21120101 稳定版
- [Power Query]:自动提取自定义一周的数据
- 公司性格测试,来一发
- 【Docker学习】【问题解决】Client.Timeout exceeded while awaiting headers
- SIP协议及其简单介绍
- 管理的基础知识都包含哪些内容
- Perceptron(感知机与径向基)
- 手机无网状态下获取经纬度,离线定位的方法。