zlib1.2.11静态库使用

1.打开VS2013,为了测试的便捷,我们新建Win32控制台程序,且项目名称为zlibTest;

2.为了项目的直观,选中如图三个文件,右键移除,点击删除。你可以不必这么做,只是测试;

3.将已编译生成的zlib1.2.11静态库zlibstat.lib与头文件zconf.h / zlib.h(zlib1.2.11静态编译),一起放入新建的文件夹CommonFiles,移动到与工程同级目录(你可以放置到喜欢的地方);

4.VS2013解决方案,选择工程名zlibTest,右键属性,我们修改输出目录与工作目录为..\..\bin\(勿忘记最后的\),方便调试与直接运行EXE(你可以按照自身的习惯修改);

5.VS2013解决方案,头文件右键,选择现有项。将CommonFiles里面的头文件zconf.h / zlib.h加入工程,且在调用zlib函数的.cpp或者.h文件,使用C调用约定#include包含zlib.h文件(zconf.h不用包含);

6.VS2013解决方案,右键属性,链接器,附加依赖项,编辑加入..\..\CommonFiles\zlibstat.lib;

6.1亦可以使用#pragma comment(lib, "..\\..\\CommonFiles\\zlibstat.lib"),你选择喜欢的方法;

7.至此,我们使用zlib1.2.11静态库的环境已经搭好了,过程可以简略很多,仅为了方便初学者。让我们一起调用zlib官方的例子试试吧!

8.好事多磨,不是吗?。链接器报错说_compress与 _uncompress函数不认识。我们需要在VS2013解决方案,右键属性,C/C++,预处理器定义,加入宏ZLIB_WINAPI,现在再编译链接试试;

9.成功了,两个警告,一个是zlib官方例子使用strcpy,微软提示strcpy_s安全点;还有一个是LIBCMT冲突,可以在VS2013解决方案,右键属性,链接器,输入,忽略特定默认库,编辑加入LIBCMT.lib,我们再重新生成项目看看;

10.执行EXE,成功压缩与解压缩。

11.使用zlib静态库,提示error LNK2026: 模块对于 SAFESEH 映像是不安全的。可以在VS2013解决方案,右键属性,链接器,命令行,加入/SAFESEH:NO,重新编译链接生成EXE;

12.使用zlib静态库,编译生成文件,提示warning LNK4099: 未找到 PDB“vc120.pdb”(使用“zlibstat.lib(adler32.obj)”...) ...,请将zlib1.2.11静态编译中的第12步,生成的vc120.pdb调试信息,拷贝到工程bin目录或者公共文件CommonFiles目录,重新编译链接生成EXE就好了(请保证vc120.pdb与zlibstat.lib是同时生成的,.调试信息需要对应);

拷贝vc120.pdb之后,重新生成,无warning LNK4099;

13.发布Release版本,上方有的操作,需要重复。你可以根据编译器或者链接器提示的错误,决定如何做。

posted @ 2018-01-22 22:05  yangjinbang  阅读(4045)  评论(1编辑  收藏  举报