ZLIB静态库的编译

  • 下载ZLIB源码

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

www.zlib.net

截至目前最新版本1.2.1.1本

如下图我选择从官网下载

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

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开发人员命令工具(管理员身份打开)如下图

输入如下命令初始化环境

1.cd vc 按下回车键

2.vcvarsall.bat 按下回车键

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

.\bld_ml32.bat

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

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

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

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

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

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

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

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

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

vs2015编译zlib静态库步骤的更多相关文章

  1. dlib编译成静态库及被其它程序调用

    一.git下载:https://github.com/davisking/dlib 官网:http://dlib.net/ 二.vs中编译成静态库 1.在vs2015中创建静态库工程(vs2015以上 ...

  2. 【转】iOS编译OpenSSL静态库(使用脚本自动编译)

    原文网址:https://www.jianshu.com/p/651513cab181 本篇文章为大家推荐两个脚本,用来iOS系统下编译OpenSSL通用库,如果想了解编译具体过程,请参看<iO ...

  3. 使用CMake编译跨平台静态库

    在开始介绍如何使用CMake编译跨平台的静态库之前,先讲讲我在没有使用CMake之前所趟过的坑.因为很多开源的程序,比如png,都是自带编译脚本的.我们可以使用下列脚本来进行编译:   . / con ...

  4. 编译skia静态库时,图片解码库无法注册的问题

    转载:http://www.cnblogs.com/imlucky/archive/2012/08/01/2617851.html 今天编译skia库,增加图片解码库时总是无效.按照此博客的方法修改后 ...

  5. C++开发新版本vs使用旧版本vs编译的静态库动态库

    关于vs潜在的升级问题概述 (Visual C++)查看官网的介绍:潜在的升级问题概述 (Visual C++).主要问题: 1. 如果使用 /GL(全程序优化)进行编译,则生成的对象文件只能使用生成 ...

  6. 为iOS编译FFmpeg静态库

    为iOS编译FFmpeg静态库 
 环境:OS X Yosemite (版本10.10.5) Xcode (Version 7.1.1 (7B1005)) 
 
 一.资料准备: (1)ffmpeg源 ...

  7. VS2015——命令行下编译、静态库动态库制作以及断点调试

    c程序编译流程 程序的基本流程如图: 1. 预处理 预处理相当于根据预处理指令组装新的C/C++程序.经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的 ...

  8. linux下 GCC编译链接静态库&动态库

    静态库 有时候需要把一组代码编译成一个库,这个库在很多项目中都要用到,例如libc就是这样一个库, 我们在不同的程序中都会用到libc中的库函数(例如printf),也会用到libc中的变量(例如以后 ...

  9. Mac OS X10.10_xcode6.1_ios8.1环境下,编译lame静态库libmp3lame.a,支持arm64 armv7s x86_64 i386 armv7指令集

    近期升级了系统到Mac OS X 10.10 而且更新了XCode6.1和iOS 8.1 之前app用到的libmp3lame.a静态库.也要支持64位的模拟器(x86_64)和64位的真机(arm6 ...

随机推荐

  1. @loj - 2289@「THUWC 2017」在美妙的数学王国中畅游

    目录 @description@ @solution@ @accepted code@ @details@ @description@ n 个点编号 0 到 n-1,每个点有一个从 [0,1] 映射到 ...

  2. PHP中__FUNCTION__与__METHOD__的区别

    你知道php中__FUNCTION__与__METHOD__的区别吗?本文通过一个小例子,为大家介绍下二者的区别,有兴趣的朋友可以参考下.   PHP中__FUNCTION__与__METHOD__的 ...

  3. winform(C#)里弹出“确定”“取消”对话框

    //消息框中需要显示哪些按钮,此处显示“确定”和“取消” MessageBoxButtons messButton = MessageBoxButtons.OKCancel; //"确定要退 ...

  4. H3C MAC地址

  5. JavaScript 字符串转为数字

    js中字符串转为数字主要4种,分别为转换函数,强制转换,js变量弱类型转换,正则表达式. 1.转换函数 JS中提供了两个转换函数parseInt()和parseFloat(),parseInt()将值 ...

  6. pytorch BiLSTM+CRF代码详解 重点

    一. BILSTM + CRF介绍 https://www.jianshu.com/p/97cb3b6db573 1.介绍 基于神经网络的方法,在命名实体识别任务中非常流行和普遍. 如果你不知道Bi- ...

  7. Educational Codeforces Round 65 (Rated for Div. 2) E. Range Deleting(思维+coding)

    传送门 参考资料: [1]:https://blog.csdn.net/weixin_43262291/article/details/90271693 题意: 给你一个包含 n 个数的序列 a,并且 ...

  8. 通过页码直接跳转 html

    <?php namespace Admin\TagLib; class BootstrapPage{ public $firstRow; // 起始行数 public $listRows; // ...

  9. LA 3942 ——Trie (前缀树)、DP

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...

  10. linux中添加常用应用程序的桌面图标

    在网上随处可以找到怎么样把应用程序的图标放到桌面上,我刚用ubuntu时也是按照网上的做法,一步一步的做的,现将网上的做法复制下来: 桌面配置文件简述\label{sec:desktop file} ...