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