官网: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. Fiddler过滤指定域名

    Fiddler过滤指定域名的方法一 切换到fiddler右侧窗口的Filters选项卡,勾选顶部的“Use Filters”,找到Hosts区域,设置以下三个选项: 1.第一项有三个选项,不做更改: ...

  2. 2:4 动态方法的调用(简化Action的配置)

    动态方法的第一种方法: 所以我们要手动设置 动态调用的开关打开:strus-core-jar里面:修改常量 使用方法: 根据请求来区分用哪个方法处理,处理完了,注意要在该方法里面返回与请求相同的字符串 ...

  3. shell篇(二)

    Linux的shell种类比较多,常见的有:Bourne Shell(/user/bin/sh或者/bin/sh), Bourne Again Shell(/user/bin/bash或者/bin/b ...

  4. DIV CSS 绘制风车

    我得说,CSS和DIV是个有趣的东西. 由于脑袋一无聊,突然想,画个DIV风车怎么样,于是就画了一个. border的风格可以自主选择. 上代码: <style> *{ margin:0p ...

  5. input文本框只能输入数字

    HTML中的input文本框有时候需要数字的做输入检查,如果能做输入之前限定只能输入数字的话,就可以省去在提交时候的输入内容检查了. 下面是自己在火狐浏览器上调试出的实现,实现原理就是在键盘事件(on ...

  6. 查看firefox浏览器 驱动geckodriver.exe文件的版本号的方法,以及下载链接

    1-进入到geckodriver.exe文件的目录: 2-在路径栏下输入cmd: 3-命令行界面下输入:geckodriver.exe -h 可以看到文件的帮助信息,其中第一行就列出了版本号 为0.1 ...

  7. Java内存管理(一):深入Java内存区域

    本文转自:http://www.cnblogs.com/gw811/archive/2012/10/18/2730117.html#undefined 推荐查看原文,原文格式更好一些. 本文引用自:深 ...

  8. 【前端开发】利用Fiddler抓包工具进行本地调试

    解决什么问题: 解决前端在本地联调页面 || 样式 || 脚本时经常修改服务器代码,浪费太多时间. 避免多人同时修改代码产生冲突问题.可以在本地调完代码之后,再贴到服务器上. 其实这个问题老早就开始想 ...

  9. Python 自学基础(四)——time模块,random模块,sys模块,os模块,loggin模块,json模块,hashlib模块,configparser模块,pickle模块,正则

    时间模块 import time print(time.time()) # 当前时间戳 # time.sleep(1) # 时间延迟1秒 print(time.clock()) # CPU执行时间 p ...

  10. 编译时错误之 error C2338: tuple_element index out of bounds

    part 1 编译器 vs2015 VC++. 完整的错误信息粘贴如下: d:\program files (x86)\microsoft visual studio 14.0\vc\include\ ...