最近qt项目中要用到一个解压缩文件的功能,选择使用quazip。
首先需要下载quazip源码
Quazip源码下载地址:Quazip源码下载
quazip在mingw编译器和msvc编译器下编译有所不同。
MSVC环境(我的是Qt5.12.9+vs2015_64):
- 直接编译会报错,提示找不到zilb.h文件,将
#include "zlib.h"
替换为#include "QtZlib/zlib.h"
即可。 - debug和release都需要编译,将生成的lib dll文件以及相应头文件拷贝到项目中,引库就可以使用了。
- 使用方法
#include "JlCompress.h"
JlCompress::compressDir("D:\\xx.zip","D:\\xx"));//压缩
JlCompress::extractDir("D:\\xx.zip","D:\\xx");//解压
MinGW环境(我的是Qt5.12.9+MinGW7.3.0_32):
- 直接编译会报错
解决方法具体可见
qt 5.10.1 mingw32下使用quazip配置方法
简单来说就是下载zlib源码进行编译
1.1 zlib下载官网地址:http://www.zlib.net/
下载后解压;
1.2 zlib编译:
启动Qt5.12.9 for DeskTop(MinGW 7.3.0 32 bit)(在开始中查找可以看到);
黑窗口控制台中切换到zlib所在的目录;
依次输入运行以下两命令:
copy win32\makefile.gcc makefile.gcc;
mingw32-make -f makefile.gcc;
此时编译器会在zlib文件夹下编译生成库文件:libz.a、libz.dll.a、zlib1.dll;
1.3 quazip编译
将 Zlib中的头文件zconf.h和zlib.h放入Quazip项目头文件中
在Qt Creator中打开Quazip项目,将生成的libz.a导入,导入后会在.pro文件中生成相应的.a和.dll文件。
建议debug和realse都编译一下,不然debug模式下可能闪退。
1.4 将zlib1.dll文件放到build目录下对应的debug或release中,quazip就可以用了。
如果需要经常切换编译器,可以按照以下写法:
- 在quazip.pro中添加以下代码:
#编译器为mingw时引入
mingw {
LIBS += -L$$PWD/zlib/mingw_32/ -lz
INCLUDEPATH += $$PWD/zlib/mingw_32/include
DEPENDPATH += $$PWD/zlib/mingw_32/include
}
可添加库后进行修改,库路径和对应头文件路径。
- 新建一个头文件,我命名为
myzlib.h
内容如下:
#ifdef _MSC_VER
//此处为Msvc编译器环境下的代码
#include "QtZlib/zlib.h"
#elif __GNUC__
//此处为MinGW编译器环境下的代码
#include "zlib.h"
#endif
将quazip源码中的#include "zlib.h"
替换为#include "myzlib.h""
即可。
- 将不同编译器生成的库,以及头文件分别放入文件夹如下图所示:
include文件夹存放头文件,mingw文件夹存放mingw编译器生成的库文件,vs文件夹存放msvc编译器生成的库文件; - 在项目pro文件中按照如下方式引入库:
//头文件路径
INCLUDEPATH += $$PWD/quazip/include
DEPENDPATH += $$PWD/quazip/include
mingw {
//mingw库文件引入
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/quazip/mingw/ -lquazip
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/quazip/mingw/ -lquazipd
} else {
//msvc库文件引入
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/quazip/vs/ -lquazip
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/quazip/vs/ -lquazipd
}
- 在需要用的地方包含
#include "JlCompress.h"
即可。