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)

VS2010 编译 Zlib库-1.2.11(zip解压库)

   3). 进入到zlib-1.2.5contrib\masmx86目录 "zlib-1.2.5\contrib\masmx86",执行bld_ml32.bat。

VS2010 编译 Zlib库-1.2.11(zip解压库)

   4). 这一步运行bld_ml32批处理文件,里面调用ml命令编译inffas32.asm和match686.asm,生成inffas32.obj和match686.obj。这两个文件在zlibvc中用到。

VS2010 编译 Zlib库-1.2.11(zip解压库)
    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中用到。VS2010 编译 Zlib库-1.2.11(zip解压库)


   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" 

  

VS2010 编译 Zlib库-1.2.11(zip解压库)

 

第二个版本:

1.进入官网http://zlib.net/,下载且解压zlib1211.zip;

VS2010 编译 Zlib库-1.2.11(zip解压库)

2. 打开已解压的zlib-1.2.11,进入win32文件夹;

VS2010 编译 Zlib库-1.2.11(zip解压库)

3.将Makefile.msc复制到上一层,也就是图2,未进入win32前的地方

VS2010 编译 Zlib库-1.2.11(zip解压库)

VS2010 编译 Zlib库-1.2.11(zip解压库)

4.打开VS2013命令行工具,使用cd命令进入zlib-1.2.11目录(第3步Makefile.msc所在的目录)

VS2010 编译 Zlib库-1.2.11(zip解压库)

VS2010 编译 Zlib库-1.2.11(zip解压库)

VS2010 编译 Zlib库-1.2.11(zip解压库)

5.键入命令行:nmake /f Makefile.msc

VS2010 编译 Zlib库-1.2.11(zip解压库)

6.回车执行

VS2010 编译 Zlib库-1.2.11(zip解压库)

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宏删除重新编译一份工程(不要着急,稍后就说怎么做)。那么,我们之前做的工作是否白费了呢?不是的。

VS2010 编译 Zlib库-1.2.11(zip解压库)

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

 

VS2010 编译 Zlib库-1.2.11(zip解压库)

VS2010 编译 Zlib库-1.2.11(zip解压库)

VS2010 编译 Zlib库-1.2.11(zip解压库)

10.打开zlibvc.sln,进入工程(再坚持一会,编译马上好),选择编译生成Release发布版(勿选择Debug)。再选中zlibstat,右键属性,配置属性,C/C++,预处理器,预处理器定义,编辑,删除ASMINF。

VS2010 编译 Zlib库-1.2.11(zip解压库)

11.右键 zlibstat,重新生成。我们使用zlib.lib静态库,只要生成这一个就够了。也可以整个工程全部重新编译生成。

 VS2010 编译 Zlib库-1.2.11(zip解压库)

12.进入..\zlib-1.2.11\contrib\vstudio\vc12\x86\ZlibStatRelease,我们发现zlibstat.lib。此版本使用uncompress正常,无断在汇编L_get_length_code_mmx.lib的错误。

VS2010 编译 Zlib库-1.2.11(zip解压库)

13.使用zlibstat.lib需要头文件,zlib.h与zconf.h。具体使用,我将写一篇随笔。

VS2010 编译 Zlib库-1.2.11(zip解压库)