前言
环境:qt5.9.9 、 zlib1.2.1、 windows10、QtCreator4.11.0
本文介绍了在Qt中使用zlib的方式。使用的场景是在上位机软件中使用解压缩功能。
点击此处下载本文完整的示例代码。
问题
比较麻烦的事情在于,截至目前最新的zlib支持到使用vs2015进行编译,而已有的上位机软件是使用minGW编译的,使用vs编译的dll库没办法在minGW中使用。现在摆在面前有两条路,一种是把上位机软件使用msvc重新编译,然后再使用vs2015编译的zlib库。另一种使用minGW编译zlib,然后再供上位机软件调用。两种方式理论上行得通,但是实践起来可能会出现各种问题,甚至行不通。
这时候通过看博客发现qt中居然自带了zlib库,于是我搜索了一下,发现在minGW下确实有zlib的头文件,在qt帮助文档中也发现了关于zlib的描述。![在这里插入图片描述](https://img-blog.csdnimg.cn/4e1ae08adc83434fac5eb909dcf2ff93.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NvbGRpZXJfZA==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/e3706d45e7ea410e8b65bc57336f35f5.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NvbGRpZXJfZA==,size_16,color_FFFFFF,t_70)
于是我新建了一个工程将在pro文件中增加LIBS+=lz,然后包含zlib.h,居然真的好用。需要注意的是我的zlib是在minGW下的,使用msvc构建是不行的。同时还必须包含qt的core模块。不过打开了zlib.h文件我才发现这里边都是些最基础的操作接口,看的一脸懵,根本不知道从何下手。这时候我突然想到了zlib源代码下的例程。
解决问题
我需要用到的是解压缩的操作,于是在源代码中找到了解压缩的高级点的API接口以及例程,把其源文件加到我新建的项目中,然后编译,结果成功了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/1c1a5cf97f2a44c5974c21c59baf7d48.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NvbGRpZXJfZA==,size_16,color_FFFFFF,t_70)
运行结果
使用了一个名为“modbus配置说明.zip”的压缩文件进行测试,输出其内部的所有文件信息。
![在这里插入图片描述](https://img-blog.csdnimg.cn/3eb264b7490242c4838ba7ce20660d4a.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NvbGRpZXJfZA==,size_16,color_FFFFFF,t_70)
至此可以在qt中使用zlib库了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)