转自:https://blog.youkuaiyun.com/wangningyu/article/details/106078990
现在用的是QT+VS开发环境(仅用 VS编译器),但是被这个zlib坑死了,如果单独的库放在QT GCC没问题,放在VS也没问题,但QT + VS混合的环境下就各种奇葩问题了!
zlib uncompress unzReadCurrentFile解压内存直接溢出进汇编死循环了!!!!!!!
整理了一下思路和解决办法,先下载最新官方源码,打开zlib-1.2.11\contrib\vstudio\打开对应VS版本编译方法:
1、如果你需要支持加密接口,在unzip.c中注释这一行
#define NOUNCRYPT
2、另外一定要在VS C++ / 预编译处理,把两个宏都删除:
ASMINF 与 ASMV
这两个宏是汇编实现的代码,不然调用uncompress或unzReadCurrentFile解压时会进入infate_fast此处崩溃!
3、如果是VS+QT5的环境,需要添加一个宏:ZLIB_WINAPI
新建一个zlib121文件夹,把x86文件夹的两个lib与一个DLL拷贝出来放进去
再把依次拷贝以下文件到zlib121目录:
crypt.h
ioapi.h
iowin32.h
mztools.h
unzip.h
zconf.h
zip.h
zlib.h
一共12个文件,如果以后在需要的工程要用ZLIB,直接把zlib121拷贝到工程目录即可:
#include "zlib121\zconf.h"
#include "zlib121\zip.h"
#include "zlib121\unzip.h"
#include "zlib121\zconf.h"
#pragama comment(lib, "zlib121/zlibwapi.lib")
#pragama comment(lib, "zlib121/zlibstat.lib")