Qt实现zip压缩和解压,编译、调用zlib和QuaZip动态库过程详解
2018-03-03 10:01
1336 查看
http://blog.csdn.net/qq_37354286/article/details/78858788
之前有个小项目中需要对zip压缩文件进行压缩和解压操作,需要用到zlib库,使用Qt开发的话可以用到已经封装好的QuaZip。作为一枚新人程序员应有的习惯,我将整个过程整理成了这篇文章,有不妥的地方还希望看到的朋友能够指出,谢谢!
Qt版本:Qt 4.8.4
编译器:MSVC2010
zlib版本:zlib-1.2.11
QuaZip版本:QuaZip-0.7.3
这里介绍的过程中,x64和x86根据实际环境而定。
QuaZip源码下载地址:http://quazip.sourceforge.net/
进入到zlib源码目录contrib/masmx86目录下,执行bld_ml32.bat。
在zlib源码中进入contrib/vstudio/vc10目录下,用VS2010打开zlibvc.sln文件。
将配置修改为Release,Win32。
右键zlibvc进行生成。
这个时候我们可以看到vc10目录下有个x86目录,里面有个ZlibDllRelease。
在quazip目录下创建一个lib文件夹,并将刚才编译zlib时生成的ZlibDllRelease拷贝到该目录下。
在quazip目录下创建一个include文件夹,将zlib源码中的zconf.h和zlib.h拷贝到该目录下。
然后回到QuaZip源码目录下,用QtCreator打开quazip.pro。
编辑quazip.pro,删掉qztest和qztest.depends = quazip一行。
在quazip下的quazip.pro中的win32中添加INCLUDEPATH包含头文件和LIBS链接zlib库,也就是刚才新建的lib目录和include目录。
2
3
4
5
6
7
8
9
10
11
使用Qt编译quazip,编译一个Debug版本,编译一个Release版本。
在构建目录中,找到生成的quazip动态库,Debug版本为quazipd.dll,Release版本为quazip.dll。
新建一个QuaZip目录,在该目录下新建一个lib/debug和lib/release文件夹,将quazipd.dll、quazipd.lib和quazip.dll、quazip.lib分别拷贝到debug和release目录下。
在新建的QuaZip目录下,新建一个include目录,将quazip.pro中的所有头文件以及zlib.h和zconf.h拷贝到include目录下。
QuaZip就算是编译好了。
2
3
4
5
6
7
8
9
新建一个工程QuaZipTest,将刚才编译好的QuaZip目录拷贝到QuaZipTest源目录下。
添加INCLUDEPATH头文件和LIBS链接库(Debug版本用quazipd.dll,Release版本用quazip.dll)。
2
3
4
2
3
4
包含头文件。
简单的测试代码。
之前有个小项目中需要对zip压缩文件进行压缩和解压操作,需要用到zlib库,使用Qt开发的话可以用到已经封装好的QuaZip。作为一枚新人程序员应有的习惯,我将整个过程整理成了这篇文章,有不妥的地方还希望看到的朋友能够指出,谢谢!
开发环境
操作系统:Windows 7 x64Qt版本:Qt 4.8.4
编译器:MSVC2010
zlib版本:zlib-1.2.11
QuaZip版本:QuaZip-0.7.3
这里介绍的过程中,x64和x86根据实际环境而定。
源码下载
zlib源码下载地址:http://www.zlib.net/QuaZip源码下载地址:http://quazip.sourceforge.net/
编译zlib
打开VS2010命令提示。进入到zlib源码目录contrib/masmx86目录下,执行bld_ml32.bat。
在zlib源码中进入contrib/vstudio/vc10目录下,用VS2010打开zlibvc.sln文件。
将配置修改为Release,Win32。
右键zlibvc进行生成。
这个时候我们可以看到vc10目录下有个x86目录,里面有个ZlibDllRelease。
编译QuaZip
打开QuaZip源码目录下,进入到quazip目录中。在quazip目录下创建一个lib文件夹,并将刚才编译zlib时生成的ZlibDllRelease拷贝到该目录下。
在quazip目录下创建一个include文件夹,将zlib源码中的zconf.h和zlib.h拷贝到该目录下。
然后回到QuaZip源码目录下,用QtCreator打开quazip.pro。
编辑quazip.pro,删掉qztest和qztest.depends = quazip一行。
在quazip下的quazip.pro中的win32中添加INCLUDEPATH包含头文件和LIBS链接zlib库,也就是刚才新建的lib目录和include目录。
win32 { headers.path=$$PREFIX/include/quazip headers.files=$$HEADERS target.path=$$PREFIX/lib INSTALLS += headers target # workaround for qdatetime.h macro bug DEFINES += NOMINMAX INCLUDEPATH += $$PWD/include LIBS += -L$$PWD/lib/ZlibDllRelease -lzlibwapi }1
2
3
4
5
6
7
8
9
10
11
使用Qt编译quazip,编译一个Debug版本,编译一个Release版本。
在构建目录中,找到生成的quazip动态库,Debug版本为quazipd.dll,Release版本为quazip.dll。
新建一个QuaZip目录,在该目录下新建一个lib/debug和lib/release文件夹,将quazipd.dll、quazipd.lib和quazip.dll、quazip.lib分别拷贝到debug和release目录下。
在新建的QuaZip目录下,新建一个include目录,将quazip.pro中的所有头文件以及zlib.h和zconf.h拷贝到include目录下。
QuaZip就算是编译好了。
调用QuaZip
QuaZip中封装了两个接口,一个解压,一个压缩。// 压缩 JlCompress::compressFile(QString fileCompressed, QString file); JlCompress::compressFiles(QString fileCompressed, QStringList files); JlCompress::compressDir(QString fileCompressed, QString dir); // 解压 JlCompress::extractFile(QString fileCompressed, QString fileName); JlCompress::extractFiles(QString fileCompressed, QStringList files); JlCompress::extractDir(QString fileCompressed, QString dir);1
2
3
4
5
6
7
8
9
新建一个工程QuaZipTest,将刚才编译好的QuaZip目录拷贝到QuaZipTest源目录下。
添加INCLUDEPATH头文件和LIBS链接库(Debug版本用quazipd.dll,Release版本用quazip.dll)。
#debug INCLUDEPATH += $$PWD/QuaZip/include LIBS += -L$$PWD/QuaZip/lib/debug -lquazipd1
2
3
4
#release INCLUDEPATH += $$PWD/QuaZip/include LIBS += -L$$PWD/QuaZip/lib/release -lquazip1
2
3
4
包含头文件。
#include <JlCompress.h>1
简单的测试代码。
#include <QApplication> #include <JlCompress.h> int main(int argc, char *argv[]) { QApplication a(argc, argv); JlCompress::compressDir("E:/a.zip", "E:/a"); JlCompress::extractDir("E:/a.zip", "E:/b"); return a.exec(); }
相关文章推荐
- Qt实现zip压缩和解压,编译、调用zlib和QuaZip动态库过程详解
- Qt用QuaZip实现压缩/解压的小Demo
- Qt调用quazip来解压和压缩文件
- Qt使用QuaZip对文件进行压缩解压操作
- ZLIB quazip (只能对ZIP进行解压,不能对RAR等其它的压缩文件解压)
- Qt使用QuaZip对文件进行压缩解压操作
- [VB.net]调用系统自带的 zLib.dll 实现 ZIP 压缩
- QT 下怎么对资源进行压缩解压缩?quazip+zlib
- Qt使用QuaZIP 压缩/解压文件
- 7-Zip 压缩与解压库-调用范例
- 使用java.util.zip实现zip压缩和解压
- java实现zip压缩及解压
- 使用org.apache.tools.zip实现zip压缩和解压
- java实现zip文件压缩,解压
- QT4.3.3+VC6.0安装编译过程详解
- JAVA实现实用的ZIP压缩与解压
- JAVA实现实用的ZIP压缩与解压
- 使用org.apache.tools.zip实现zip压缩和解压 http://wintys.blog.51cto.com/425414/90878
- C#使用SharpZipLib压缩和解压文件3/3调用实现压缩和解压
- 使用 ZLib 压缩/解压 ZIP 文件