官网:http://www.zlib.net/ ,所有版本下载:http://www.zlib.net/fossils/

ZC: 我下载的是 zlib-1.2.3.tar.gz 和 zlib-1.2.11.tar.gz(20170626当前最新版)

ZC: 我是看的一个网上的教程,具体文章不知道是哪个了...

ZC: zlib-1.2.3.tar.gz的编译方法是 进入目录“...\zlib-1.2.3\projects\visualc6”,用VC6打开 zlib.dsw,然后进行编译。最主要需要 这3个文件:zlib.h、zconf.h、zlib.lib 。

ZC: zlib-1.2.11.tar.gz的编译方法是看了“README”知道的...(方式一):进入目录“...\zlib-1.2.11\win32”用命令行编译 (方式二):进入目录“...\contrib\vstudio\...” 选择对应版本的VS目录 然后进行编译  (我没有实际使用 zlib-1.2.11.tar.gz 进行编译 和 编码...)

zlib-1.2.3.tar.gz 的 测试使用代码:

#include <stdio.h>
#include <windows.h> #include "zlib.h"
#pragma comment(lib,"zlib") void main()
{
HANDLE pfile=::CreateFile("C:\\111.bmp",GENERIC_READ,,NULL,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_BACKUP_SEMANTICS,NULL);//用这个函数比OpenFile好
if(pfile==INVALID_HANDLE_VALUE)
{
MessageBox(NULL,"打开文件失败","Error",MB_OK);
CloseHandle(pfile);//一定注意在函数退出之前对句柄进行释放。
return;
}
DWORD filesize = GetFileSize(pfile,NULL);
char* buffer = new char[filesize+];//最后一位为'/0',C-Style字符串的结束符。
DWORD readsize = ;
ReadFile(pfile,buffer,filesize,&readsize,NULL); DWORD dwTick1 = ::GetTickCount();
//printf("filesize : %d, ::GetTickCount() : %d\n", filesize, dwTick1); //*
//压缩
BYTE *dest = new BYTE[filesize];
unsigned long destSize = filesize;
//Z_OK
int iRtn = compress(dest, &destSize, (unsigned char*)buffer, filesize);
//#define Z_BUF_ERROR (-5)
printf("iRtn : %d\n", iRtn);
printf("destSize : %d, ::GetTickCount() : %d\n", destSize, ::GetTickCount());
//*/
//#define Z_NO_COMPRESSION 0
//#define Z_BEST_SPEED 1
//#define Z_BEST_COMPRESSION 9
//#define Z_DEFAULT_COMPRESSION (-1) // ***
//*
// 解压
unsigned long nSize = *;
BYTE *target=new BYTE[nSize];
iRtn = uncompress(target, &nSize, dest, destSize); printf("iRtn : %d\n", iRtn);
printf("nSize : %d, ::GetTickCount() : %d\n", nSize, ::GetTickCount());
//*/ //*
HANDLE pWfile=::CreateFile("C:\\z01.bmp",GENERIC_WRITE|GENERIC_READ,,NULL,CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,NULL);//用这个函数比OpenFile好
if(pWfile==INVALID_HANDLE_VALUE)
{
//MessageBox(NULL,"打开文件失败","Error",MB_OK);
CloseHandle(pWfile);//一定注意在函数退出之前对句柄进行释放。
return;
} DWORD writesize = ; //::WriteFile(pWfile,buffer,filesize,&writesize,NULL);
::WriteFile(pWfile,target,nSize,&writesize,NULL); //善后工作
delete[]buffer;//注意是delete[]而不是delete
CloseHandle(pWfile);//关闭句柄
//*/
}

Z

zlib__ZC的更多相关文章

随机推荐

  1. php发送 与接收流文件

    PHP 发送与接收流文件 sendStreamFile.php 把文件以流的形式发送 receiveStreamFile.php 接收流文件并保存到本地 sendStreamFile.php < ...

  2. Mysql的group by语句

    如上图查询结果,因为group by后面的字段是的分组的依据字段,所以select子句中只有是group by后面的字段,或者是聚集函数才有意义.然而mysql居然可以在select子句中出现不在gr ...

  3. 浅谈css中渐变衔接

    无论transition还是keyframes,如何让变化更自然,这是前端应该考虑的问题. 这里,我简单总结下自己的方法. 以实践为例子. 1.图像渐变 @keyframes looppic{ fro ...

  4. VS2010/MFC编程入门之四十三(MFC常用类:CTime类和CTimeSpan类)

    上一节中鸡啄米讲了MFC常用类CString类的用法,本节继续讲另外两个MFC常用类-日期和时间类CTime类和CTimeSpan类. 日期和时间类简介 CTime类的对象表示的时间是基于格林威治标准 ...

  5. 用python实现websocket请求遇到的问题及解决方法。

    想要实现python的ws库功能,实时获取对方服务器ws协议返回的数据,查了下百度,用如下流程: ws = create_connection("wss://ws.xxxxxxx.info/ ...

  6. 2018-2019-2 20165209 《网络对抗技术》Exp7: 网络欺诈防范

    2018-2019-2 20165209 <网络对抗技术>Exp7: 网络欺诈防范 1 基础问题回答和实验内容 1.1基础问题回答 (1)通常在什么场景下容易受到DNS spoof攻击. ...

  7. linux查看是否有某个运行的进程命令

    linux查看是否有某个运行的进程命令:例如,查询是否包含 “my_post” 关键字的进程 ps aux | grep my_post ps aux | grep  my_post | grep - ...

  8. linux常见命令ps的应用

    ps(Process Status)命令是linux中最常见的命令之一,它用来列出当前系统运行中的进程的状态信息.当然了,它只显示命令执行时的进程状态,如果想要动态列出状态信息,可以选择使用top命令 ...

  9. ACM题目————困难的串

    题目描述 如果一个字符串包含两个相邻的重复子串,则称他是“容易的串”,其他串称为"困难的串".例如,BB,ABCDACABCAB,ABCDABCD都是容易的串,而D,DC,ABDA ...

  10. OpenCV-跟我一起学数字图像处理之拉普拉斯算子

    https://www.cnblogs.com/german-iris/p/4840647.html Laplace算子和Sobel算子一样,属于空间锐化滤波操作.起本质与前面的Spatial Fil ...