vs2015编译zlib静态库步骤

时间:2023-03-09 03:07:09
vs2015编译zlib静态库步骤

ZLIB静态库的编译

  • 下载ZLIB源码

ZLib官网下载或者GitHub上直接 clone 下来即可

www.zlib.net

截至目前最新版本1.2.1.1本

如下图我选择从官网下载

vs2015编译zlib静态库步骤

下载完以后解压得到源代码目录结构大致如下

amiga
├─contrib
│ ├─ada
│ ├─amd64
│ ├─asm686
│ ├─blast
│ ├─delphi
│ ├─dotzlib
│ │ └─DotZLib
│ ├─gcc_gvmat64
│ ├─infback9
│ ├─inflate86
│ ├─iostream
│ ├─iostream2
│ ├─iostream3
│ ├─masmx64
│ ├─masmx86
│ ├─minizip
│ ├─pascal
│ ├─puff
│ ├─testzlib
│ ├─untgz
│ └─vstudio
│ ├─vc10
│ ├─vc11
│ ├─vc12
│ ├─vc14
│ │ └─x86
│ │ ├─MiniUnzipDebug
│ │ │ └─Tmp
│ │ │ └─miniunz.tlog
│ │ ├─MiniUnzipRelease
│ │ │ └─Tmp
│ │ │ └─miniunz.tlog
│ │ ├─MiniZipDebug
│ │ │ └─Tmp
│ │ │ └─minizip.tlog
│ │ ├─MiniZipRelease
│ │ │ └─Tmp
│ │ │ └─minizip.tlog
│ │ ├─TestZlibDebug
│ │ │ └─Tmp
│ │ │ └─testzlib.tlog
│ │ ├─TestZlibDllDebug
│ │ │ └─Tmp
│ │ │ └─testzlibdll.tlog
│ │ ├─TestZlibDllRelease
│ │ │ └─Tmp
│ │ │ └─testzlibdll.tlog
│ │ ├─TestZlibRelease
│ │ │ └─Tmp
│ │ │ └─testzlib.tlog
│ │ ├─ZlibDllDebug
│ │ │ └─Tmp
│ │ │ └─zlibvc.tlog
│ │ ├─ZlibDllRelease
│ │ │ └─Tmp
│ │ │ └─zlibvc.tlog
│ │ ├─ZlibStatDebug
│ │ │ └─Tmp
│ │ │ └─zlibstat.tlog
│ │ └─ZlibStatRelease
│ │ └─Tmp
│ │ └─zlibstat.tlog
│ └─vc9
├─doc
├─examples
├─msdos
├─nintendods
├─old
│ └─os2
├─os400
├─qnx
├─test
├─watcom
└─win32

打开vs2015开发人员命令工具(管理员身份打开)如下图

vs2015编译zlib静态库步骤

输入如下命令初始化环境

1.cd vc 按下回车键

2.vcvarsall.bat 按下回车键

vs2015编译zlib静态库步骤

切换到ZLIB源码根目录下进入到contrib\masmx86 下 执行如下命令

.\bld_ml32.bat

然后进入到\contrib\vstudio 目录下 选择你对应的Visual Studio版本<因为我这里是Visual Studio 2015> 所以我选择进入\contrib\vstudio\vc14
打开zlibvc.sln 后会看到如下项目

vs2015编译zlib静态库步骤

zlibvc 是动态链接库、而我们不是编译动态链接库所以用不到

我们需要的是zlibstat 这个项目 也就是静态链接库

编译这个项目之前不要着急编译,下面这几部是必须要做的。

默认情况下Zlibstat 静态库也好 或者zlibvc动态库也好 都是以masmx64位编译模式来加载文件的如下图
vs2015编译zlib静态库步骤

vs2015编译zlib静态库步骤

inffas8664.c这个文件是masmx64的,但是我们编译的是x86的也就是32位应用程序的

所以这里我们需要改成contrib\inflate86下的inffas86.c

只需要将inffas8664.c这个文件从项目中排除,从新添加contrib\inflate86下的inffas86.c到项目中编译即可!

这样编译的静态库再调用minizip 压缩解压缩zip文件的时候才不会出错!