Mockingjay的文章

  • 使用VS2013静态编译ZLIB压缩库

    背景最近心血来潮,就使用开源的ZLIB压缩库写了个数据、文件压缩与解压缩的小程序。程序写完后,发现需要额外带一个“zlibwapi.dll”动态链接库文件才行。因为,当时编译ZLIB库的源码的时候,编译的是动态库,所以,就只能动态链接了,额外带个DLL文件。
    后来了解到,原来ZLIB库本身也有静态库的项目工程,只需要编译静态库的项目工程,生成ZLIB静态库,就不需要动态链接ZLIB库了,直接可以静态调用ZLIB库,就不需要带着个“zlibwapi.dll”DLL文件了,本文就把编译的过程分享给大家。
    准备工作首先,你要有个VS2013开发环境。因为本文讲解的是使用VS2013开发环境进行编译的,理论上VS2010、VS2012、VS2015、VS2017等应该也适用的。
    其次,需要到ZLIB官网 (http://www.zlib.net) 下载ZLIB库的源码。本文以“zlib-1.2.8”版本为例进行讲解。
    编译过程将“zlib-1.2.8”版本ZLIB库源码下载下来后,进行解压缩。打开“\contrib\vstudio”目录,就可以看到有“vc9”、“vc10”、“vc11”三个目录,分别对应VS2008、VS2010、VS2012版本的开发环境。由于我们使用的是VS2013版本的编译器,所以选择最接近VS2013版本编译器的“vc11”工程项目。

    打开“vc11”目录,双击打开“zlibvc.sln”解决方案文件。这时,我们便可以看到左侧的工程项目列表。其中,“zlibvc”项目是动态链接库的工程项目;“zlibstat”项目是静态库的工程项目。

    此次我们编译的是静态库的项目,所以选择“zlibstat”进行编译。如果,你需要动态库,你可以选择“zlibvc”项目进行编译。
    编译的时候,选择编译模式:Debug模式或是Release模式;编译的位数:Win32或是x64。
    选择好后,右击项目工程,选择“重新生成(E)”。

    然后,在生成的目录下,便可以看到生成的ZLIB静态库文件“zlibstat.lib”。

    这时,我们只需把“zlibstat.lib”静态库文件和“zlib.h”以及“zconf.h”复制到我们开发的工程目录下,并在程序中包含头文件和导入静态库文件,那么就可以使用ZLIB库来压缩与解压缩数据了。

    总结步骤不是很复杂,主要是没有接触过ZLIB库,一开始不清楚需要打开哪个目录下的文件,编译哪个工程项目。在了解清楚这两点后,自己就可以轻松编译出自己想要的库文件了。
    要注意一点的是,注意编译的时候,“运行库”对应的设置,这样在自己程序调用编译好的ZLIB库的时候,也要选择相应的模式,进行相应的“运行库”设置。
    参考参考自《Windows黑客编程技术详解》一书
    1  留言 2019-01-07 10:35:40
  • 使用VS2013静态编译ZLIB压缩库

    背景最近心血来潮,就使用开源的ZLIB压缩库写了个数据、文件压缩与解压缩的小程序。程序写完后,发现需要额外带一个“zlibwapi.dll”动态链接库文件才行。因为,当时编译ZLIB库的源码的时候,编译的是动态库,所以,就只能动态链接了,额外带个DLL文件。
    后来了解到,原来ZLIB库本身也有静态库的项目工程,只需要编译静态库的项目工程,生成ZLIB静态库,就不需要动态链接ZLIB库了,直接可以静态调用ZLIB库,就不需要带着个“zlibwapi.dll”DLL文件了,本文就把编译的过程分享给大家。
    准备工作首先,你要有个VS2013开发环境。因为本文讲解的是使用VS2013开发环境进行编译的,理论上VS2010、VS2012、VS2015、VS2017等应该也适用的。
    其次,需要到ZLIB官网 (http://www.zlib.net) 下载ZLIB库的源码。本文以“zlib-1.2.8”版本为例进行讲解。
    编译过程将“zlib-1.2.8”版本ZLIB库源码下载下来后,进行解压缩。打开“\contrib\vstudio”目录,就可以看到有“vc9”、“vc10”、“vc11”三个目录,分别对应VS2008、VS2010、VS2012版本的开发环境。由于我们使用的是VS2013版本的编译器,所以选择最接近VS2013版本编译器的“vc11”工程项目。

    打开“vc11”目录,双击打开“zlibvc.sln”解决方案文件。这时,我们便可以看到左侧的工程项目列表。其中,“zlibvc”项目是动态链接库的工程项目;“zlibstat”项目是静态库的工程项目。

    此次我们编译的是静态库的项目,所以选择“zlibstat”进行编译。如果,你需要动态库,你可以选择“zlibvc”项目进行编译。
    编译的时候,选择编译模式:Debug模式或是Release模式;编译的位数:Win32或是x64。
    选择好后,右击项目工程,选择“重新生成(E)”。

    然后,在生成的目录下,便可以看到生成的ZLIB静态库文件“zlibstat.lib”。

    这时,我们只需把“zlibstat.lib”静态库文件和“zlib.h”以及“zconf.h”复制到我们开发的工程目录下,并在程序中包含头文件和导入静态库文件,那么就可以使用ZLIB库来压缩与解压缩数据了。

    总结步骤不是很复杂,主要是没有接触过ZLIB库,一开始不清楚需要打开哪个目录下的文件,编译哪个工程项目。在了解清楚这两点后,自己就可以轻松编译出自己想要的库文件了。
    要注意一点的是,注意编译的时候,“运行库”对应的设置,这样在自己程序调用编译好的ZLIB库的时候,也要选择相应的模式,进行相应的“运行库”设置。
    参考参考自《Windows黑客编程技术详解》一书
    1  留言 2018-11-06 22:01:05

发送私信

这个世界上唯一没有变的,就是,每个人都在变

19
文章数
17
评论数
eject