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