第一個版本:
本文主要介紹在Windows 7 64bit操作系統下,利用Visual Studio 2010,如何安裝,生成,並使用zlib 1.2.5。
(1). 首先,使用Visual Studio 2010編譯生成zlib 1.2.5版本的靜態和動態鏈接庫。
(2). 然後,通過加載靜態鏈接庫zlibstat.lib,實現對簡單txt文檔的壓縮與解壓縮。
(3). 最後,通過調用動態鏈接庫zlibwapi.lib,實現對簡單txt文檔的壓縮與解壓縮。
1. 使用Visual Studio 2010編譯生成zlib 1.2.5版本
1). 從zlib官網 "http://zlib.net/"
下載最新版本的zlib "http://zlib.net/zlib-1.2.5.tar.gz"
解壓,展開到系統盤。
2). 在編譯前,首先開啓VS2010的Command Prompt (32bit)
3). 進入到zlib-1.2.5contrib\masmx86目錄 "zlib-1.2.5\contrib\masmx86",執行bld_ml32.bat。
4). 這一步運行bld_ml32批處理文件,裏面調用ml命令編譯inffas32.asm和match686.asm,生成inffas32.obj和match686.obj。這兩個文件在zlibvc中用到。
5). 若是準備生成64位庫,則進入到zlib-1.2.5contrib\masmx64目錄 "zlib-1.2.5\contrib\masmx64",執行bld_ml64.bat。注意ml64.exe在vs2010的"Microsoft Visual Studio 10.0/VC/bin"下面找不到。我們需要使用"Microsoft Visual Studio 10.0/VC/bin/amd64/"下面的ml64.exe。這裏可以簡單將其複製到"Microsoft Visual Studio 10.0/VC/bin"下面。
這一步運行bld_ml64批處理文件,裏面調用ml命令編譯gvmat64.asm和inffasx64.asm,生成gvmat64.obj和inffasx64.obj。這兩個文件在zlibvc中用到。
6). zlib的vs sln解決方案文件可以在如下路徑中找到 "zlib-1.2.5\contrib\vstudio\vc10\zlibvc.sln"
這個解決方案中包含6個工程。其中:
(1). zlibvc生成動態鏈接庫zlibwapi.dll和對應的導入庫zlibwapi.lib
(2). zlibstat生成靜態鏈接庫zlibstat.lib
(3). testzlibdll測試生成的動態鏈接庫zlibwapi.dll
(4). testzlib測試生成的靜態鏈接庫zlibstat.lib
最後我們在debug模式下編譯整個解決方案。生成的dll和lib文件可在如下文件夾中找到
"zlib-1.2.5\contrib\vstudio\vc10\x86"
爲了隨後的調試方便,在隨後的例子中,我們把頭文件zconf.h,zlib.h放到如下文件夾
"C:\MANUS\CommonSpace\zlib 1.2.5"
庫文件zlibwapi.dll,zlibwapi.lib,zlibstat.lib放到如下文件夾
"C:\MANUS\CommonSpace\zlib 1.2.5\Lib Debug"
第二個版本:
1.進入官網http://zlib.net/,下載且解壓zlib1211.zip;
2. 打開已解壓的zlib-1.2.11,進入win32文件夾;
3.將Makefile.msc複製到上一層,也就是圖2,未進入win32前的地方
4.打開VS2013命令行工具,使用cd命令進入zlib-1.2.11目錄(第3步Makefile.msc所在的目錄)
5.鍵入命令行:nmake /f Makefile.msc
6.回車執行
7.此時打開zlib-1.2.11目錄,我們發現已經生成一系列文件。zlib靜態庫只需要zlib-1.2.11目錄生成的三個文件,zlib.h / zconf.h / zlib.lib,但是請勿使用此時生成的zlib.lib,VS2013測試此時生成的zlib.lib靜態庫,使用函數uncompress,將一直斷在彙編L_get_length_code_mmx.lib(親身經歷)。我們需要在VS2013將預處理器中ASMINF宏刪除重新編譯一份工程(不要着急,稍後就說怎麼做)。那麼,我們之前做的工作是否白費了呢?不是的。
9.zlib-1.2.11目錄,進入contrib目錄,再進入vstudio目錄,選擇你的VC版本目錄,具體看對應的表,VS2013選擇vc12目錄;
VS 6.0 | VC6.0 |
VS 2002 | VC7.0 |
VS 2003 | VC7.1 |
VS 2005 | VC8.0 |
VS 2008 | VC9.0 |
VS 2010 | VC10 |
VS 2012 | VC11 |
VS 2013 | VC12 |
VS 2015 | VC14 |
10.打開zlibvc.sln,進入工程(再堅持一會,編譯馬上好),選擇編譯生成Release發佈版(勿選擇Debug)。再選中zlibstat,右鍵屬性,配置屬性,C/C++,預處理器,預處理器定義,編輯,刪除ASMINF。
11.右鍵 zlibstat,重新生成。我們使用zlib.lib靜態庫,只要生成這一個就夠了。也可以整個工程全部重新編譯生成。
12.進入..\zlib-1.2.11\contrib\vstudio\vc12\x86\ZlibStatRelease,我們發現zlibstat.lib。此版本使用uncompress正常,無斷在彙編L_get_length_code_mmx.lib的錯誤。
13.使用zlibstat.lib需要頭文件,zlib.h與zconf.h。具體使用,我將寫一篇隨筆。