目录
简介
zlib被设计为一个免费的,通用的,法律上不受限制的-即不受任何专利保护的无损数据压缩库,几乎可以在任何计算机硬件和操作系统上使用。zlib数据格式本身可跨平台移植。与Unix compress(1)和GIF图像格式中使用的LZW压缩方法不同,zlib中当前使用的压缩方法实际上从不扩展数据。(在极端情况下,LZW可以使文件大小增加一倍或三倍。)zlib的内存占用空间也与输入数据无关,并且可以在必要时减少压缩量,从而减少了输入数据
- zlib Home Site
- GitHub - madler/zlib: A massively spiffy yet delicately unobtrusive compression library.
1、下载zip库
进入官网:zlib Home Site
2、编译zlib为静态库/动态库
1)使用 cmake gui 版生成VS2019解决方案
2)配置路径
3)点击Configure
4)点击Generate
5)点击Open Project
6)编译全部
编译成功,查看生成的库文件
静态库:zlibstaticd.lib
动态库:zlibd.lib、zlibd.dll
3、创建新项目测试zlib
1)创建空项目ZlibTestDemo
2)拷贝静态库文件zlibstaticd.lib到ZlibTestDemo项目的lib目录下
3)拷贝头文件zconf.h、zlib.h到ZlibTestDemo中
4)新增main.cpp文件,代码如下:
#include <iostream>
#include "zlib/zlib.h"
//添加静态库
#ifndef _DEBUG
#else
#ifdef _WIN64
#pragma comment (lib,"lib/zlibstaticd.lib")
#else
#pragma comment (lib,"lib/zlibstaticd.lib")
#endif // _WIN64
#endif
int main()
{
const char* src = "Test Zlib!";
uLong src_len = (uLong)strlen(src) + 1;
uLong dstLen = 0x100;
Bytef dst[0x100] = { 0 };
int res = compress(dst, &dstLen, (const Bytef*)src, src_len);
uLong src_ex_len = 0x100;
char src_ex[0x100] = { 0 };
res = uncompress((Bytef*)src_ex, &src_ex_len, dst, dstLen);
getchar(); //控制台等待输入后再退出
return 0;
}
4、测试效果
源数据:
压缩数据(789C为原生zlib压缩的标志):
解压缩数据:
压缩后成功解压缩,测试成功!
源码文件可以从这里下载。