[zlib] CMake + VS2015 下编译zlib,及使用小例
2024-09-04 08:46:19
下载与解压
可以到zlib官网 http://zlib.net/ 下载,这个没有被墙的,如果下载,试一下换个网络再访问。因为我在公司的网络是访问不了的。
我当前使用的是 zlib1.2.11版本。
下载好后,解压出来,看看根目录下有一个CMakeLists.txt,就证明可以用CMake创建VS的工程了。
CMake创建工程
把source code和build the binaries的路径设置后好,点击【Configure】,出去的配置项中,需要看看其中包括了INSTALL的项目,路径最好都改为VC路径下;
若不修改,默认在安装一步是会把lib、dll还有头文件安装到C盘中,后期使用的时候还需要手动添加这些路径到工程里去;
用CMake配置工程时,前提也要把安装路径添加到环境变量中的Path里,不然CMake没法查找到这个库的路径的。
所以为了方便,还是安装在VC路径最好。
这里确认好后,就点击【Generate】,基本不会出问题的,就点击【Open Project】打开工程进行后面的步骤。
编译与安装
打开后,直接在【解决方案】上鼠标右键,再点【生成解决方案】,之前就是编译过程,等待一会儿:
接着就是安装,对其中的【INSTALL】项目,右键【仅用于项目】=>【仅生成INSTALL】就可以执行安装操作了:
完成
小提示:
最好是把Debug和Release版本的都编译安装好,并且在后期不同的版本里使用上对应版本的库。
Debug版本:zlibd.lib zlibd.dll
Release版本: zlib.lib zlib.dll
头文件是一样的.
例程
main.cpp
#include <stdio.h>
#include <zlib.h> int main(int argc, char **args)
{
/*原始数据*/
unsigned char strsrc[] = "这些是测试数据。123456789 abcdefghigklmnopqrstuvwxyz\n\t\0abcdefghijklmnopqrstuvwxyz\n"; //包含\0字符
unsigned char buf[] = { };
unsigned char strdst[] = { };
unsigned long srclen = sizeof(strsrc);
unsigned long buflen = sizeof(buf);
unsigned long dstlen = sizeof(strdst);
int i;
FILE * fp; printf("源串:");
for (i = ; i<srclen; ++i)
{
printf("%c", strsrc[i]);
}
printf("原串长度为:%ld\n", srclen); printf("字符串预计算长度为:%ld\n", compressBound(srclen));
//压缩
compress(buf, &buflen, strsrc, srclen);
printf("压缩后实际长度为:%ld\n", buflen);
//解压缩
uncompress(strdst, &dstlen, buf, buflen); printf("目的串:");
for (i = ; i<dstlen; ++i)
{
printf("%c", strdst[i]);
} return ;
}
例程用了一下别人写的,很简单的一个,就试运行一下。
最新文章
- [bzoj3123][sdoi2013森林] (树上主席树+lca+并查集启发式合并+暴力重构森林)
- 装13失败后的逆袭(ComboBox的联动)
- PHP写时复制, 变量复制和对象复制不同!!!
- 将一个query后面的参数转为数组
- 【转】Lua coroutine 不一样的多线程编程思路
- struts2中的addActionError 、addFieldError、addActionMessage的方法
- 【转载】DataGridView 使用集合作为数据源,并同步更新
- uva 10160
- HTTP Header 详解【转】
- jenkins api调用
- const用法
- ORACLE函数之单行数字函数
- javascript !!的作用是把一个其他类型的变量转成的bool类型
- EF实体类配置总结
- angular项目——小小记事本2
- JS排序
- .net 笔试面试总结(2)
- 通用权限管理系统之权限菜单zTree树的展示及移动的处理方法
- C++中为什么有时要使用extern ";C";
- 怎么让Windows2012和Windows2008多用户同时远程