简介
QuaZip是使用QT/C++对ZLIB进行封装,且用于压缩及解压缩ZIP的开源库,今天就来介绍如何在Win下使用该开源库。
Qt中是提供了qCompress/qUncompress来进行文件的压缩和解压,但是存在很大的缺点,只能解压Qt压缩的文件,其他的格式或者手动压缩的文件,无法解压。
一、编译zlib源码
下载zlib源码:官方下载地址
zlib1211.zip在编译的时候出现了一些错误,为了节约时间建议下载zlib128.zip,另外如果你不想编译zlib源码,可以直接下载zlib128-dll.zip,解压后的dll文件是可以直接使用的,那么接下来我们就开始编译源码吧。先打开VS的开发人员命令提示符窗口,然后进入到\zlib128\zlib-1.2.8\contrib\masmx86目录下,执行脚本bld_ml32.bat
最终会生成inffas32.obj和match686.obj
最后回到zlib的根目录下,执行nmake命令,编译动态库
nmake -f win32/Makefile.msc LOC="-DASMV -DASMINF" OBJA="contrib/masmx86/inffas32.obj contrib/masmx86/match686.obj"
编译成功后会生成动态库文件zlib1.dll
以上是32位动态库的编译,如果你想编译64位的动态库,可以进入到\zlib128\zlib-1.2.8\contrib\masmx64目录下,执行脚本bld_ml64.bat,接下来的编译步骤按照以上的方式就可以了。
二、编译QuaZip
下载QuaZip源码:官方下载地址
解压该源码后,在quazip中创建include和lib文件夹
然后将zlib中的zconf.h和zlib.h头文件拷贝到include中,再把zlib编译好的动态库文件zlib1.dll文件拷贝到lib中。再打开quazip的工程,进入到quazip.pro工程文件中,
添加头文件路径和动态库路径
最后编译quazip工程,会生成一个动态库文件,Debug(quazipd.dll)和Release(quazipd.dll)模式编译得到的文件名称不一样,用哪一个可以自行选择。走到这一步上,编译动态库的工作就已经完成了。
三、创建测试案例
我们需要用到上述编译生成的动态库文件以及头文件,所以同理需要在测试工程中创建include和lib文件夹
将zlib中的zconf.h和zlib.h头文件拷贝到include中,然后再从quazip拷贝所有头文件。
最后修改测试工程文件,添加头文件路径和动态库路径
INCLUDEPATH += $$PWD/include
CONFIG(debug, debug|release) {
LIBS += -L$$PWD/lib -lquazipd
} else {
LIBS += -L$$PWD/lib -lquazip
}
测试代码如下:
#include <QDebug>
#include "JlCompress.h"
#include <QDir>
#include <QProcess>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
//压缩文件
bool ret = JlCompress::compressFile("Qt.zip", "Qt.pdf");
if (!ret) {
qDebug() << "文件压缩失败...";
}
//解压文件
QStringList list = JlCompress::extractDir("Test_File.zip", QDir::currentPath());
if (list.length() <= 0) {
qDebug() << "文件解压失败...";
return;
}
qDebug() << "list:" << list;
}