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。具体使用,我将写一篇随笔。

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