现在用的是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")