vs2015編譯zlib靜態庫步驟


ZLIB靜態庫的編譯

  • 下載ZLIB源碼

ZLib官網下載或者GitHub上直接 clone 下來即可


www.zlib.net

截至目前最新版本1.2.1.1本

如下圖我選擇從官網下載

下載源代碼

下載完以后解壓得到源代碼目錄結構大致如下

amiga
├─contrib
│ ├─ada
│ ├─amd64
│ ├─asm686
│ ├─blast
│ ├─delphi
│ ├─dotzlib
│ │ └─DotZLib
│ ├─gcc_gvmat64
│ ├─infback9
│ ├─inflate86
│ ├─iostream
│ ├─iostream2
│ ├─iostream3
│ ├─masmx64
│ ├─masmx86
│ ├─minizip
│ ├─pascal
│ ├─puff
│ ├─testzlib
│ ├─untgz
│ └─vstudio
│ ├─vc10
│ ├─vc11
│ ├─vc12
│ ├─vc14
│ │ └─x86
│ │ ├─MiniUnzipDebug
│ │ │ └─Tmp
│ │ │ └─miniunz.tlog
│ │ ├─MiniUnzipRelease
│ │ │ └─Tmp
│ │ │ └─miniunz.tlog
│ │ ├─MiniZipDebug
│ │ │ └─Tmp
│ │ │ └─minizip.tlog
│ │ ├─MiniZipRelease
│ │ │ └─Tmp
│ │ │ └─minizip.tlog
│ │ ├─TestZlibDebug
│ │ │ └─Tmp
│ │ │ └─testzlib.tlog
│ │ ├─TestZlibDllDebug
│ │ │ └─Tmp
│ │ │ └─testzlibdll.tlog
│ │ ├─TestZlibDllRelease
│ │ │ └─Tmp
│ │ │ └─testzlibdll.tlog
│ │ ├─TestZlibRelease
│ │ │ └─Tmp
│ │ │ └─testzlib.tlog
│ │ ├─ZlibDllDebug
│ │ │ └─Tmp
│ │ │ └─zlibvc.tlog
│ │ ├─ZlibDllRelease
│ │ │ └─Tmp
│ │ │ └─zlibvc.tlog
│ │ ├─ZlibStatDebug
│ │ │ └─Tmp
│ │ │ └─zlibstat.tlog
│ │ └─ZlibStatRelease
│ │ └─Tmp
│ │ └─zlibstat.tlog
│ └─vc9
├─doc
├─examples
├─msdos
├─nintendods
├─old
│ └─os2
├─os400
├─qnx
├─test
├─watcom
└─win32

打開vs2015開發人員命令工具(管理員身份打開)如下圖

環境初始化

輸入如下命令初始化環境

1.cd vc 按下回車鍵

2.vcvarsall.bat 按下回車鍵

圖片

切換到ZLIB源碼根目錄下進入到contrib\masmx86 下 執行如下命令

.\bld_ml32.bat

然后進入到\contrib\vstudio 目錄下 選擇你對應的Visual Studio版本<因為我這里是Visual Studio 2015> 所以我選擇進入\contrib\vstudio\vc14
打開zlibvc.sln 后會看到如下項目

image

zlibvc 是動態鏈接庫、而我們不是編譯動態鏈接庫所以用不到

我們需要的是zlibstat 這個項目 也就是靜態鏈接庫

編譯這個項目之前不要着急編譯,下面這幾部是必須要做的。

默認情況下Zlibstat 靜態庫也好 或者zlibvc動態庫也好 都是以masmx64位編譯模式來加載文件的如下圖
image

image


inffas8664.c這個文件是masmx64的,但是我們編譯的是x86的也就是32位應用程序的

所以這里我們需要改成contrib\inflate86下的inffas86.c

只需要將inffas8664.c這個文件從項目中排除,從新添加contrib\inflate86下的inffas86.c到項目中編譯即可!

這樣編譯的靜態庫再調用minizip 壓縮解壓縮zip文件的時候才不會出錯!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM