编译和使用zlib

来源:互联网 发布:2017最火的中文编程 编辑:程序博客网 时间:2024/06/06 08:41

  由于要弄一个项目,在windows下用到zlib库,现成的库都是release版本的,如果项目是debug的就会导致一大堆符号错误,无奈只得自己重新编译zlib库。

首先下载 源码和工程文件

解压到某个目录

开启VS2010 的命令行 32bit

进入到zlib-1.2.5\contrib\masmx86目录

执行bld_ml32.bat

打开工程项目zlib-1.2.5\contrib\vstudio\vc10\zlibvc.sln

编译整个solution(包括 debug 和 Release)

  此时已经得到了4个文件 zlibwapi.dll zlibwapi.lib zlibwapid.dll zlibwapid.lib 其中 lib 文件是连接期间用到的,dll文件是运行时候用到的。还有两个头文件 zconf.h zlib.h 是在编译期间用到。关于lib 和dll 关系和区别可见链接。

  把得到的lib文件放在VS工程目录下,在 属性 -> 连接器 -> 输入 -> 附加依赖项 一栏里面把刚才得到的lib文件加进去,注意末尾带有 d 的表示debug版。

此时编译,链接依然有错:

error LNK2019: 无法解析的外部符号 _compress

  在 VS 2010 下通过 dumpbin 命令查看lib导出函数 :

dumpbin /exports XXX.lib

可以看到 有compress 的导出。

      ordinal    name             1    _adler32@12           140    _adler32_combine@12            39    _compress2@20             2    _compress@16

经过网上查询,发现是要在vs2010的WIN32环境下加入 ZLIB_WINAPI的宏定义才行:

#define ZLIB_WINAPI#include "zconf.h"

注意这个宏定义要加在 zconf.h 包含之前,如果加载了 zconf.h 之后也不行。
此时编译一切顺利。

参考链接

0 0
原创粉丝点击