这里使用的是 QuaZip 方案。它调用了 zlib1.dll,如果是32位,直接编译 QuaZip 即可,默认就是32位。
如果是64位,不兼容的 zlib1.dll 会导致编译失败,需要自己编译 zlib。
一、编译Zlib
编译环境:VS2017
1. 官网下载zlib库
![img](https://img-blog.csdnimg.cn/20200315104618824.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l4eTI0NA==,size_16,color_FFFFFF,t_70)
解压到一个好找的位置,这里是直接放D盘。
2.命令行编译32位dll
![img](https://img-blog.csdnimg.cn/20200315105120568.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l4eTI0NA==,size_16,color_FFFFFF,t_70)
1.最常见的方式,开始菜单找到VS命令提示符工具,输入cd 复制粘贴zlib库的路径(你下载解压的zlib文件路径),回车切换到zlib目录下
![img](https://img-blog.csdnimg.cn/20200315105424880.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l4eTI0NA==,size_16,color_FFFFFF,t_70)
2.输入nmake -f win32/Makefile.msc 回车开始编译
![img](https://img-blog.csdnimg.cn/2020032214391375.png)
3.简单两步,在zlib目录下就生成了静态库和动态库了,生成的是x86版本。
![img](https://img-blog.csdnimg.cn/20200315105941254.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l4eTI0NA==,size_16,color_FFFFFF,t_70)
3.命令行编译64位dll
![img](https://img-blog.csdnimg.cn/20200322113711317.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l4eTI0NA==,size_16,color_FFFFFF,t_70)
1.编译32位用的是x86的命令提示工具,编译64位需要在开始菜单找到x64的命令提示工具,输入cd zlib库的路径,回车切换到zlib目录下
![img](https://img-blog.csdnimg.cn/20200322113843565.png)
2.输入 nmake -f win32/Makefile.msc AS=ml64 LOC=”-DASMV -DASMINF -I.” OBJA=”inffasx64.obj gvmat64.obj inffas8664.obj”
执行编译
![img](https://img-blog.csdnimg.cn/20200322115336796.png)
3.如果遇到错误提示 inffasx64.obj:fatal error LNK1112:模块计算机类型“x64”与目标计算机类型“x86”冲突,
![img](https://img-blog.csdnimg.cn/20200322113933538.png)
![img](https://img-blog.csdnimg.cn/20200322114207795.png)
\4. 再次执行 nmake -f win32/Makefile.msc AS=ml64 LOC=”-DASMV -DASMINF -I.” OBJA=”inffasx64.obj gvmat64.obj inffas8664.obj” ,顺利的话就能得到64位的静态库、动态库和导入库了。
![img](https://img-blog.csdnimg.cn/20200322114540991.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l4eTI0NA==,size_16,color_FFFFFF,t_70)
成功的 zlib1.dll,替换到 quazip 中的 lib/zlib1.dll。
二、编译QuaZip
转自:https://blog.csdn.net/xiaopei_yan/article/details/90267714
zlib编译详见
https://blog.csdn.net/zhangxuechao_/article/details/85049711
下载quazip
https://github.com/stachenov/quazip
也可直接下载我配置好的quazip
https://github.com/zwx230741/quazip.git
加入头文件
在quazip中创建include文件夹
将zlib头文件拷贝到include文件夹下
加入动态库文件
在quazip中创建lib文件夹
![1](https://img-blog.csdnimg.cn/20181217151912899.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poYW5neHVlY2hhb18=,size_16,color_FFFFFF,t_70)
将zlib编译好的动态库拷贝到lib文件夹下
![2](https://img-blog.csdnimg.cn/20181217152118112.png)
quazip工程配置
修改quazip.pro工程文件。添加头文件路径和动态库路径
1 | INCLUDEPATH += $$PWD/include |
![3](https://img-blog.csdnimg.cn/20181217152338995.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poYW5neHVlY2hhb18=,size_16,color_FFFFFF,t_70)
编译动态库
不加入头文件,报以下错误
创建测试工程quazipTest
同理,创建include和lib目录。分别放头文件和动态库文件
![5](https://img-blog.csdnimg.cn/2018121715285397.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poYW5neHVlY2hhb18=,size_16,color_FFFFFF,t_70)
拷贝头文件
从quazip拷贝所有头文件
拷贝库文件
拷贝刚刚生成的动态库文件。quazipd.dll
是Debug生成的,quazipd.dll
是Release生成的,zlib1.dll
是zlib动态库
![3](https://img-blog.csdnimg.cn/20181217153001113.png)
quazipTest工程配置
修改quazipTest.pro工程文件。添加头文件路径和动态库路径
1 | INCLUDEPATH += $$PWD/include |
添加压缩解压代码
1 |
|