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

zlib1.2.11静态编译的更多相关文章

  1. libcurl-7.54.1附加zlib1.2.11的编译

    手上有个小程序需要通过HTTP协议通信,选择了出名的libcurl作为支持库.由于网上的教程多是命令行编译,本人记性不好,比较讨厌记住一堆命令,因此折腾了一天通过VS对libcurl和zlib进行了编 ...

  2. Arm64架构下静态编译Nginx

    这段时间,我一直忙于将 Rainbond 源码构建模块移植到 Arm64/aarch64 架构中.这一源码构建模块可以将指定代码仓库中包含的源码,拉取构建成为容器镜像,在各种容器平台中运行.目前支持的 ...

  3. C++ Qt 框架静态编译 操作记录

    谁愿意写个程式出来之后还附带一堆DLL,尤其是名字如此明显的名字. 于是在网上看了看,是需要下载源代码然后进行编译的,但是看了看别人说的编译时间,长达几个小时,瞬间就感觉不想做了.因为我还需要抓紧时间 ...

  4. VS2010使用静态编译的qt库(Qt 5)

    Qt 5引入了一种新的编写方式. Qt开发界面很方便,但发布程序就不那么方便了,你的把引用到的dll一起发布才行,要是能静态编译就好了,发布的时候只有一个exe多方便. 虽然以前为了方便,直接安装的q ...

  5. QT5静态编译教程,主要针对vs2012(渡世白玉)

    QT5,VS2012静态编译,所有的库准备充分的话qwebkit也可以静态编译通过,但是我编译的版本使用中如果用了QWEBVIEW控件在连接时会出错. 注:我自己编译的环境是:win server 2 ...

  6. VS2010使用静态编译的qt库

    Qt开发界面很方便,但发布程序就不那么方便了,你的把引用到的dll一起发布才行,要是能静态编译就好了,发布的时候只有一个exe多方便. 虽然以前为了方便,直接安装的qt-windows-opensou ...

  7. c++11 静态断言

    c++11 静态断言 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #includ ...

  8. SpiderMonkey js引擎的静态编译与使用, SpiderMonkey的使用

    SpiderMonkey js引擎的静态编译与使用 2017年10月02日 02:51:22 yaolixing01 阅读数:536   原文出处: http://yaolixing.oltag.co ...

  9. Win7下静态编译QT5.12源码

    官方参考文档:https://doc.qt.io/qt-5/build-sources.html CSDN博客:https://blog.csdn.net/GG_SiMiDa/article/deta ...

随机推荐

  1. bzoj 4444: [Scoi2015]国旗计划

    Description A国正在开展一项伟大的计划--国旗计划.这项计划的内容是边防战士手举国旗环绕边境线奔袭一圈.这 项计划需要多名边防战士以接力的形式共同完成,为此,国土安全局已经挑选了N名优秀的 ...

  2. java的运行机制(基础)

    1:高级语言的运行机制: 我们编程都是用的高级语言(写汇编和机器语言的大牛们除外),计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写 ...

  3. spring_boot_pay支付宝,微信,银联支付详细代码案例

    spring-boot-pay 支付服务:支付宝,微信,银联详细代码案例(除银联支付可以测试以外,支付宝和微信支付测试均需要企业认证,个人无法完成测试),项目启动前请仔细阅读 注意事项  . 友情提示 ...

  4. appium 解锁九宫格

    很多人在自动化的过程中,对解锁9宫格有很多麻烦,特别是app上的有些整个放在整个view中,这就给我们测试解锁九宫格带来问题了,笔者尝试了去解决,但是都没有找到一个很好的方案,那么我就试着先去通过安卓 ...

  5. 关于vs2010下水晶报表的使用入门

    关于vs2010下使用水晶报表了解情况记录如下: 1.首先vs2010不再自带水晶报表控件了,需要下载安装vs2010配套的水晶报表控件:CRforVS_13_0.这个控件安装很简单,基本上都选择默认 ...

  6. C# 防止同时调用=========使用读写锁三行代码简单解决多线程并发的问题

    http://www.jb51.net/article/99718.htm     本文主要介绍了C#使用读写锁三行代码简单解决多线程并发写入文件时提示"文件正在由另一进程使用,因此该进程无 ...

  7. MySQL常见连接查询

    在实际应用中,由于不同的业务需求,一般的select查询语句无法满足要求.所以就需要了解一些MySQL的高级查询方式 内连接 inner join 典型的连接查询,有相等(=)连接和不等(<&g ...

  8. Extjs入门-grid

    function rowdblclickFn(grid, rowIndex, e){//双击事件              var row = grid.store.getById(grid.stor ...

  9. Linux重启后raid5的名字发生变化

    Linux重启后raid5的名字发生变化 使用raid,每次重启后,都会变换设备路径 比如原来为/dev/md0 重启一次变成了/dev/md127 这个问题,可以使用修改配置文件来解决. 1.mda ...

  10. Java实现矩阵计算器【代码】

    其实这个程序最开始是大二下学期Java的一次平时作业,当时只要求产生几个随机矩阵并对这些矩阵进行计算. 所以当时没去实现现在这么丰富而且实用的功能.不过当时倒是挺想去做的,无奈有些不知道怎么去实现. ...