qt开发解压缩zip文件实现

 作者开发环境:Qt5.8 ,win10

总体思路:首先我们编译zip源码,生成zip的动态库;然后再编译quazip源码,得到quazip的动态库;最后在我们的程序中去调用。

详细步骤:

1、编译zlib

zlib源码下载:zlib Home Site

zlib的编译,参考:QT 编译zlib_qt zlib-CSDN博客

2、编译quazip

QuaZip是Qt对Zlib进行封装,用于压缩和解压文件的库。

quazip源码的下载:QuaZIP download | SourceForge.net

下载下来后,如果直接编译会报错,我们做如下更改:

(1)打开刚刚下载的quazip.pro,第二行SUBDIRS=quazip qztest 改为SUBDIRS=quazip 

(2)将qt安装目录下的两个头文件拷贝出来(zlib.h和zconf.h),不同版本路径可能有出入。将两个头文件拷贝到quazip项目路径中,然后添加到项目程序中。

(3)在quazip中创建lib文件夹

​编辑
将zlib编译好的动态库拷贝到lib文件夹下

​编辑
修改quazip.pro工程文件。添加动态库路径

LIBS += -L$$PWD/lib -lzlib1

       

        编译成功后,生成的libquazip.a,quazip.dll(如果是debug版本编译生成的就是libquazipd.a和 quazipd.dll)就是我们需要的。

3、创建测试工程

        同理,创建include和lib目录,分别放头文件和动态库文件。从quazip拷贝所有头文件到include文件夹下,拷贝刚刚生成的动态库文件到lib文件夹下(quazip.dll、libquazipd.a是quazip动态库,zlib1.dll是zlib动态库)。

​编辑

修改quazipTest.pro工程文件,添加头文件路径和动态库路径,这样环境就搭建好了。

​编辑

4、添加压缩解压代码

包含头文件    #include "JlCompress.h"

JlCompress::compressDir("D:/testzip/a.zip", "D:/testzipdir1");  //压缩文件

JlCompress::extractDir("D:/testzip/a.zip", "D:/testzipdir2");      //解压缩

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/679605.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sourceTree push失败

新电脑选择commit and push,报错了,不过commit成功,只不过push失败了。 原因是这个,PuTTYs cache and carry on connecting. 这里的ssh选择的是 PuTTY/Plink,本地没有这个ssh密钥,改换成openSSH&#xff…

链表的阶乘

int FactorialSum(List L) {int res 0; // 结果初始化struct Node* x L; // 从链表的头节点开始// 遍历链表中的每一个节点while (x ! NULL) {int data x->Data; // 当前节点的值int y 1; // 用于计算当前节点值的阶乘// 计算当前节点值的阶乘for (int j 1; j < dat…

TCP四次挥手中为什么 TIME_WAIT 等待的时间是 2MSL?

TCP 连接断开 1、TCP 四次挥手过程是怎样的&#xff1f;如下图 2、为什么 TIME_WAIT 等待的时间是 2MSL&#xff1f; MSL 是 Maximum Segment Lifetime&#xff0c;报文最大生存时间&#xff0c;它是任何报文在网络上存在的最长时间&#xff0c;超过这个时间报文将被丢弃。因…

【工具推荐定制开发】一款轻量的批量web请求命令行工具支持全平台:hey,基本安装、配置、使用

背景 在开发 Web 应用的过程中&#xff0c;作为开发人员&#xff0c;为了确认接口的性能能够达到要求&#xff0c;我们往往需要一个接口压测工具&#xff0c;帮助我们快速地对我们所提供的 Web 服务发起批量请求。在接口联调的过程中&#xff0c;我们通常会用 Postman 等图形化…

MVC与MVVM架构模式

1、MVC MVC&#xff1a;Model-View-Controller&#xff0c;即模型-视图-控制器 MVC模式是一种非常经典的软件架构模式。从设计模式的角度来看&#xff0c;MVC模式是一种复合模式&#xff0c;它将多个设计模式结合在一种解决方案中&#xff0c;从而可以解决许多设计问题。 MV…

C++:类与对象—继承

类与对象—继承 一、继承是什么&#xff1f;二、继承定义三、基类和派生类对象赋值转换四、继承中的作用域五、派生类的默认成员函数六、继承与友元七、继承与静态成员八、复杂的菱形继承及菱形虚拟继承九、继承的总结和反思十、考察重点 一、继承是什么&#xff1f; 继承(inh…

威客网上招标系统(五)

目录 5 详细设计 5.1 系统首页 5.1.1系统首页&#xff08;网站首页index.jsp&#xff09; 5.1.2 下沙派威客网首页界面说明 5.2 站内新闻信息 5.2.1站内新闻操作界面 5.2.2系统主操作界面说明 5.3威客在线操作界面 5.3.1 威客在线操作界面 5.3.2威客在线说明 5.4系统…

ssrf初步

一&#xff0c;简介 全称&#xff1a;Server-Side Request Forgery&#xff08;中文&#xff1a;服务器端请求伪造&#xff09; 攻击者从服务端发起请求&#xff0c;让服务器连接任意外部系统&#xff0c;从而泄露敏感数据。主要利用各种协议的请求伪造&#xff0c;例如php协…

KMP + Compose 跨平台 Android IOS 实战入门

KMP&#xff08;Kotlin Multiplatform&#xff09;是一种面向移动端开发的跨平台框架&#xff0c;使用 Kotlin 语言编写&#xff0c;可实现在 Android 和 iOS 平台上共享代码和逻辑。通过 KMP 框架&#xff0c;我们可以编写一次代码&#xff0c;然后在不同的平台上进行部署和运…

20240430,类模板案例-数组类封装,STL初识,STRING容器(构造函数,赋值)

我真的碎掉了&#xff0c;主要是我很缺那点钱啊现在&#xff0c;我真的碎掉了我碎掉了碎掉了碎掉了 目录 0.8 类模板案例-数组类封装 myarray.hpp a.cpp 一&#xff0c;STL初识 1.1 STL基本概念 1.2 vector 存放内置数据 1.3 vector存放自定义数据(及指针类型&#xf…

Java中的异常处理机制

Java中的异常处理机制主要通过try、catch和finally三个关键字来实现。以下是Java异常处理机制的工作原理和正确处理异常的一些基本步骤&#xff1a; ## 异常处理机制的工作原理 1. **try**&#xff1a;包围可能抛出异常的代码块。 2. **catch**&#xff1a;捕获并处理特定类型…

CoroNa Green,可用于细胞内或细胞外环境中NA+浓度的测量

引言&#xff1a;在化学研究的海洋中&#xff0c;优质的化学试剂是实验成功的关键。今天&#xff0c;我要为大家分享一款备受好评的化学试剂——CoroNa Green。这款试剂以其独特的性能和广泛的应用领域&#xff0c;赢得了众多科研人员的青睐。 CoroNa Green是一种常用的钠离子荧…