Windows下zlib和libPng库的编译及使用

libpng是一套免费的、公开源代码的程序库,支持对 PNG 图形文件的创建、读写等操作。

zlib是通用的开源压缩库。

libpng 可以到www.libpng.org 上 下载源代码。libpng 使用 zlib 程序库作为压缩引擎,zlib 也是著名的 gzip (GNU zip) 所采用的压缩引擎。zlib 是通用的压缩库,提供了一套 in-memory 压缩和解压函数,并能检测解压出来的数据的完整性(integrity)。zlib 也支持读写 gzip (.gz) 格式的文件这些都是免费和公开的

 

这里主要记录下windows下如何利用vs2010编译和使用这两个库。

 

一、zlib库的编译

    首先要下载这个库,这个谷歌和百度也都可以找得到的。我下载的是zlib-1.2.5,下载完解压出来即可。下边就开始编译吧。(包括动态库和静态库两种)

1. 首先开启VS2010的Command Prompt (32bit),也就是命令提示窗口。

2. 进入到zlib-1.2.5/contrib/masmx86目录,执行bld_ml32.bat。(同理,64位的电脑进入masmx64目录,执行bld_ml64.bat)。这一步运行bld_ml32批处理文件,里面调用ml命令编译inffas32.asm和match686.asm,生成inffas32.obj和match686.obj(生成在本目录下)。这两个文件在zlibvc中用到。

3. 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文件可在相应的文件夹中找到。

 

下边介绍如何使用编译好的动态或是静态库。(假设项目工程已经建立完毕)

这里我们把静态库zlibstat.lib和动态库(zlibwapi.dll/zlibwapi.lib)以及zlib.h/zlibconf.h文件放在一个文件夹中。

 

二、使用zlib静态库:zlibstat.lib

1. 包含头文件
    属性--C/C++--常规--附加包含目录(添加包含.h文件的目录)
2. 定义宏
    属性--C/C++--预处理器--预处理器定义:添加 ZLIB_WINAPI ASMV ASMINF
3. 项目包含.lib文件所在的目录:
    属性--链接器--常规--附加库目录
4. 项目包含.lib文件
    属性--链接器--输入--附加依赖项(libstat.lib)

5. 项目代码中 #include "zlib.h"
编译生成.exe即可使用。

 

三、使用动态库 zlibwapi.lib


1. 包含头文件
    属性--C/C++--常规--附加包含目录(添加包含.h的目录)
2. 定义宏
    属性--C/C++--预处理器--预处理器定义:添加 ZLIB_WINAPI
3. 项目包含.lib文件所在的目录:
    属性--链接器--常规--附加库目录
4. 项目包含.lib文件
    属性--链接器--输入--附加依赖项(zlibwapi.lib)

5. 项目代码中 #include "zlib.h"
编译生成.exe文件需要.dll文件支持(动态加载)

 

四、libpng的编译

 

1. 首先要下载这个库,我下载的是 libpng-1.2.37,解压。

2. 这个的解决方案在 libpng-1.2.37/projects/visualc71中,打开 libpng.sln。用vs2010打开可能需要转换,点击下一步进行转换即可。

3. 不要急着编译。首先分析这个解决方案:

    这个解决方案的libpng项目默认是采用的动态库(.dll)编译的(属性--配置属性--常规--项目默认类型)。我们可以直接编译静态库,生成.dll文件和.lib文件。在编译的时候,可能会出错,反正就是各种错误,不是缺少这个就是缺少那个的,很烦人,这里我本来就是想编译静态类型的,所以也就没在研究这个。下边改为静态类型编译,这里有点麻烦,别着急。

4. 静态编译需要宏定义,我们首先打开项目属性--配置属性--C/C++--预处理器定义,这里我们看到动态编译时定义的一些宏。这里有两个对我们有用:PNG_BUILD_DLL 和 ZLIB_DLL。

5. 在整个解决方案中查找PNG_BUILD_DLL,我们可以在pngconf.h文件中看到下边一段代码:

Normal' png-on-win32 defines/defaults:
PNG_BUILD_DLL -- building dll
PNG_USE_DLL   -- building an application, linking to dll
(no define)   -- building static library, or building an
                 application and linking to the static lib

这里可以很明显的看出,如果我们需要编译静态库,则需要 no define.所以我们删除 PNG_BUILD_DLL 宏定义。

6. 在整个解决方案中查找 ZLIB_DLL,我们会找到下边一句话:

If building or using zlib as a DLL, define ZLIB_DLL

这里只是告诉我们,如果我们把zlib作为dll使用,则定义ZLIB_DLL。但是我们这里不希望这么做,所以继续分析。下边还有几句话:

If building or using zlib with the WINAPI/WINAPIV calling convention,
define ZLIB_WINAPI.
Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.

这段英文看的不是特别懂,但是能知道,我们定义ZLIB_WINAPI即可。这个我们在上边的zlib静态库的编译中也用到了,所以,应该就是这么定义了。我们在“预处理器定义”中删除ZLIB_DLL,改为 ZLIB_WINAPI。

7. 宏定义完了,还需要最关键的一步,我们在属性--配置属性--常规--项目默认类型中更改为“静态库(.lib)。编译选项改为LIB Debug。编译生成即可。生成的文件为libpngd.lib。

 

下边介绍如何使用编译好的静态库。(假设项目工程已经建立完毕)

这里我们把静态库 libpngd.lib 和 png.h/pngconf.h 文件放在一个文件夹中。

 

五、libpng静态库(libpngd.lib)的使用。

1. 包含头文件
    属性--C/C++--常规--附加包含目录(添加包含.h文件的目录)
2. 定义宏
    这里因为要用到zlib库,所以只要定义ZLIB_WINAPI即可

3. 项目包含.lib文件所在的目录:
    属性--链接器--常规--附加库目录
4. 项目包含.lib文件
    属性--链接器--输入--附加依赖项(libpngd.lib)

5. 项目代码中 #include "png.h"
编译生成.exe即可使用。

 

注:在编译的时候,可能会出现以下警告:

warning LNK4099: 未找到 PDB“vc100.pdb”(......);正在链接对象,如同没有调试信息一样

这个不影响代码的运行。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在 Windows 平台下使用 Visual Studio 2017 编译 Ghostscript 的步骤: 1. 下载 Ghostscript 源代码 你可以在 Ghostscript 官网的下载页面 [https://www.ghostscript.com/download/gsdnld.html](https://www.ghostscript.com/download/gsdnld.html) 上下载 Ghostscript 的源代码。下载完成后,解压到本地。 2. 安装依赖 Ghostscript 依赖以下: - zlib - libpng - jpeglib - tiff 你可以在各自的官网上下载这些的源代码,或者使用编译的二进制文件。 3. 配置编译环境 - 安装 Visual Studio 2017,并安装 C++ 开发环境。 - 安装 CMake。你可以从 [https://cmake.org/download/](https://cmake.org/download/) 下载最新版本的 CMake。 4. 生成 Visual Studio 工程 - 打开 CMake GUI。 - 在 "Where is the source code" 中填写 Ghostscript 源代码的路径。 - 在 "Where to build the binaries" 中填写生成的工程文件路径,例如 Ghostscript/build。 - 点击 Configure,选择 Visual Studio 版本并选择生成 64 位。 - CMake 会提示你输入各种选项,你可以根据自己的需求进行选择。如果不确定,可以选用默认值。 - 点击 Generate,CMake 会生成 Visual Studio 工程文件。 5. 编译 Ghostscript - 打开 Visual Studio,打开生成的 Ghostscript 工程文件。 - 在解决方案栏中,右键点击 ALL_BUILD 项目,选择生成。 - 编译完成后,在解决方案栏中找到 gs 工程,右键点击 INSTALL 项目,选择生成。 - 编译完成后,你可以在 Ghostscript 安装目录下找到生成的文件。 以上就是在 Windows 平台下使用 Visual Studio 2017 编译 Ghostscript 的步骤。希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值