QT应用之Quazip压缩
最近在用QT解压缩zip文件,这里记录一下调试的过程。
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
搜索博客了解,要使用QT压缩解压缩需要用到zlib以及quazip文件 ,对于它们需要进行编译,生成对应的库文件,然后再QT工程中加载进行调用一、本文章环境
1.windows平台
2.QT 5.12.9 Mingw32bit
这里需要注意:是Mingw编译,不是vs201x平台。你的QT用什么编译器,就选择什么编译器。我这里用的QT Creator,没用使用visual studio
二、编译Zlib源码
1.下载Zlib源码
源码地址:http://www.zlib.net/ 版本为:zlib 1.2.11
2.MingW32编译Zlib源码
2.1 解压zlib-1.2.11.tar.gz
解压下载好的zlib-1.2.11.tar.gz,放到好找的位置
2.2 打开MingW32进行编译
然后进入到待编译的zlib-1.2.11目录内
执行以下代码:
copy win32\Makefile.gcc makefile.gcc
mingw32-make -f makefile.gcc
2.3 处理编译完的zlib文件
新建zlib文件夹,在其子目录下新建include、lib文件夹
将刚才编译完的zlib文件夹下的zlib1.dll、libz.dll.a、libz.a放入lib文件夹内
zlib.h zconf.h拷贝到include目录下
三、编译quazip源码
3.编译quazip
3.1 源码下载
源码地址:版本:quazip-0.7.3.zip
3.2 quazip配置及编译
1、解压quazip-0.7.3.zip之后,打开对应.pro文件
2、根据需求配置Configure Project
3、删除pro文件中SUBDIRS=quazip qztest的qztest
4、把上一步创建的zlib文件夹拷贝到quazip-0.7.3\quazip目录下
5、编辑quazip.pro文件,在win32代码块下添加两行代码,将zlib的头文件和库文件包含进来(具体路径根据实际修改)
INCLUDEPATH += $$PWD/zlib/include
LIBS += -L $$PWD/zlib/lib -lzlib1
==========================================================================================
LIBS+= -L直接打地址 -l直接打库名
注意点:-L后面没有空格,直接跟着地址,然后空格,-l后面是去掉lib之后的文件名。
一个例子:如我们有E:\CLibraries\NewmatL\debug\libNewmatL.a这个文件,则:
LIBS += -LE:\CLibraries\NewmatL\debug\ -lNewmatL
==========================================================================================
6、将项目改为Release模式,执行qmake,然后在构建,至此编译结束
四、压缩与解压缩实验
4.1 quazip生成文件处理
1、新建libquazip文件夹,此目录下在分别新建lib和include两个文件夹。将quazip工程下的所有头文件复制到include文件夹下。将release目录下生成的libquazip.a和quazip.dll文件复制到lib目录下。
include:
lib:
2、接下来新建一个QT控制台程序,在项目的.pro文件中添加下面两行代码,导入相关的库文件和头文件(具体路径根据实际修改)
将之前的libquazip、zlib文件夹复制到该项目文件夹下
INCLUDEPATH += $$PWD/libquazip/include
LIBS += -L$$PWD/libquazip/lib -lquazip -L$$PWD/zlib/lib -lzlib1
4.2 压缩测试
在mian文件中添加如下代码,进行压缩测试
#include <QCoreApplication>
#include "JlCompress.h"
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
if(false==JlCompress::compressDir("I:\\test.zip","I:\\test"))
qDebug()<<"compress failed";
else
qDebug()<<"compress successed";
return a.exec();
}
然后构建生成(前提是你在对应文件夹已经创建了对应的test文件夹,否则会compress failed)
4.3 解压缩测试
将刚才的test文件夹删除
修改程序为:
#include <QCoreApplication>
#include "JlCompress.h"
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
JlCompress::extractDir("I:\\test.zip","I:\\test");
return a.exec();
}
运行程序,test.zip被解压生成test文件夹。
解压缩成功