ZLIB 主要是对ZIP 文件进行压缩与解压缩 但是有一个缺点:不能对文件夹循环解压压缩,quazip 主要是对 ZLIB 进行封装,解决它的这一个BUG
ZLIB主页:http://www.zlib.net/index.html
ZLIB使用范例 http://www.zlib.net/zlib_how.html
F:\zipljt\quazip-0.7.3\quazip\zlib.h:34: 错误:C1083: 无法打开包括文件:“zconf.h”: No such file or directory
上面2个错误参考:
ZLIB主页:http://www.zlib.net/index.html
ZLIB使用范例 http://www.zlib.net/zlib_how.html
quazip 官网 :http://quazip.sourceforge.net/
也尝试过自己先编译ZLIB再编译quazip,但的是一直不成功,后来就直接用了QT自带的zlib库来编译quazip
PRO文件如下:
F:\quazip-0.7.3\quazip.pro
#TEMPLATE=subdirs
#SUBDIRS=quazip qztest
#qztest.depends =
TEMPLATE=subdirs
SUBDIRS=quazip
#DEFINES+=QUAZIP_STATIC
#DEFINES+=_ZLIB_H
#DEFINES+=ZLIB_WINAPI
INCLUDEPATH += "C:\\Qt\\4.8.5\\src\\3rdparty\\zlib"
INCLUDEPATH += $$PWD/
DEPENDPATH += $$PWD/
后来遇到了问题:
F:\zipljt\quazip-0.7.3\quazip\quacrc32.cpp:27: 错误:C1083: 无法打开包括文件:“zlib.h”: No such file or directory,但是又可以进入此文件F:\zipljt\quazip-0.7.3\quazip\zlib.h:34: 错误:C1083: 无法打开包括文件:“zconf.h”: No such file or directory
上面2个错误参考:
http://www.tuicool.com/articles/nammyu
http://blog.csdn.net/xiexingshishu/article/details/44947985
http://blog.csdn.net/s569646547/article/details/51436380
解决办法:直接把 C:\Qt\4.8.5\src\3rdparty\zlib 下面的这些文件COPY到F:\zipljt\quazip-0.7.3\quazip\ 下面,编译 quazip 工程,解决问题。
使用程序:F:\zipljt\testCode\testCode.pro:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = testCode
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../quazip-0.7.3/quazip/debug/ -lquazip
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../quazip-0.7.3/quazip/debug/ -lquazipd
INCLUDEPATH += $$PWD/../quazip-0.7.3/quazip/debug
DEPENDPATH += $$PWD/../quazip-0.7.3/quazip/debug
INCLUDEPATH += $$PWD/../quazip-0.7.3/quazip
测试代码:
#include "JlCompress.h"
//testzlib
void MainWindow::on_testzlib_clicked()
{
// 压缩文件夹 已经有,则会覆盖
JlCompress::compressDir("F:\\tx\\xx.zip", "F:\\tx\\dcomp");
// 解压缩文件夹 如果已经 "F:\\tx\\xdcomp" 已经有,则会覆盖
JlCompress::extractDir("F:\\tx\\xx.zip", "F:\\tx\\xdcomp");
}
后来因为要调试代码,所以觉得用库不是很方便,就直接加的源代码,PRO如下:
#quazipDIR添加源码 b
DEFINES += QUAZIP_STATIC
quazipDIR = $$quote($$PWD/quazip-0.7.3/quazip)
INCLUDEPATH += $$quazipDIR
DEPENDPATH += $$quazipDIR
HEADERS += \
$$quazipDIR/crypt.h \
$$quazipDIR/ioapi.h \
$$quazipDIR/JlCompress.h \
$$quazipDIR/quaadler32.h \
$$quazipDIR/quachecksum32.h \
$$quazipDIR/quacrc32.h \
$$quazipDIR/quagzipfile.h \
$$quazipDIR/quaziodevice.h \
$$quazipDIR/quazipdir.h \
$$quazipDIR/quazipfile.h \
$$quazipDIR/quazipfileinfo.h \
$$quazipDIR/quazip_global.h \
$$quazipDIR/quazip.h \
$$quazipDIR/quazipnewinfo.h \
$$quazipDIR/unzip.h \
$$quazipDIR/zip.h
SOURCES += $$quazipDIR/qioapi.cpp \
$$quazipDIR/JlCompress.cpp \
$$quazipDIR/quaadler32.cpp \
$$quazipDIR/quacrc32.cpp \
$$quazipDIR/quagzipfile.cpp \
$$quazipDIR/quaziodevice.cpp \
$$quazipDIR/quazip.cpp \
$$quazipDIR/quazipdir.cpp \
$$quazipDIR/quazipfile.cpp \
$$quazipDIR/quazipfileinfo.cpp \
$$quazipDIR/quazipnewinfo.cpp \
$$quazipDIR/unzip.c \
$$quazipDIR/zip.c
#quazipDIR添加源码 e
调试代码主要在 JlCompress类中