官网: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. 1.keras实现-->使用预训练的卷积神经网络(VGG16)

    VGG16内置于Keras,可以通过keras.applications模块中导入. --------------------------------------------------------将 ...

  2. AdaBoost Classifier和Regressor

    Adaboost原理传送门 AdaBoost在我看理论课程的时候,以分类为例子来讲解的,谁知道sklearn里面基本上都有classifier和regressor两种.这个倒是我没想到的!!! fro ...

  3. Qt setMargin()和setSpacing() 的含义

    mainLayout=newQVBoxLayout(this); mainLayout->setMargin(30); //表示控件与窗体的左右边距 mainLayout->setSpac ...

  4. linux命令:linux文件处理命令

    命令格式 : 命令  [-选项]   [参数] 例:ls -la /etc 说明:1)个别命令使用不遵循此格式,[]代表可选 2)当有多个选项时,可以写在一起 3)-a等于 --all,调用简化选项用 ...

  5. 常用jquery记录

    1.jquery easing jQuery Easing是一款比较老的jQuery插件,在很多网站都有应用,尤其是在一些页面滚动.幻灯片切换等场景应用比较多.它非常小巧,且有多种动画方案供选择,使用 ...

  6. python3.4学习笔记(四) 3.x和2.x的区别,持续更新

    python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...

  7. [转载]ASP.NET-----Repeater数据控件的用法总结

    一.Repeater控件的用法流程及实例: 1.首先建立一个网站,新建一个网页index.aspx. 2.添加或者建立APP_Data数据文件,然后将用到的数据库文件放到APP_Data文件夹中. 3 ...

  8. 面试问题整理之python测试

    1.下列哪个语句在Python中是非法的? A.x = y = z =1 B.x = (y = z + 1) C.x, y = y, x D.x += y 答案:B 2.关于Python内存管理,下列 ...

  9. 如何向GLSL中传入多个纹理

    http://blog.csdn.net/huawenguang/article/details/41245871 如何向GLSL中传入多个纹理 这几天在研究如何实现用GLSL对多个纹理进行融合处理, ...

  10. Python入门之面向对象的多态

    本章目录: 一.多态 二.多态性 三.鸭子类型 ============================== 一.多态 多态指的是一类事物有多种形态. 动物有多种形态:人,狗,猪. import ab ...