VS2010 編譯 Zlib庫-1.2.11(zip解壓庫)

第一個版本:

本文主要介紹在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)

Windows <wbr>7 <wbr>64bit和Visual <wbr>Studio <wbr>2010下安裝及使用Zlib <wbr>1.2.5

   3). 進入到zlib-1.2.5contrib\masmx86目錄 "zlib-1.2.5\contrib\masmx86",執行bld_ml32.bat。

Windows <wbr>7 <wbr>64bit和Visual <wbr>Studio <wbr>2010下安裝及使用Zlib <wbr>1.2.5

   4). 這一步運行bld_ml32批處理文件,裏面調用ml命令編譯inffas32.asm和match686.asm,生成inffas32.obj和match686.obj。這兩個文件在zlibvc中用到。

Windows <wbr>7 <wbr>64bit和Visual <wbr>Studio <wbr>2010下安裝及使用Zlib <wbr>1.2.5
    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中用到。Windows <wbr>7 <wbr>64bit和Visual <wbr>Studio <wbr>2010下安裝及使用Zlib <wbr>1.2.5


   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" 

  

Windows <wbr>7 <wbr>64bit和Visual <wbr>Studio <wbr>2010下安裝及使用Zlib <wbr>1.2.5

 

第二個版本:

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與VC對應關係
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。具體使用,我將寫一篇隨筆。

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