zlib uncompress unzReadCurrentFile解壓內存溢出解決辦法

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

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章