最近写个Qt demo,想要使用压缩和解压多个文件的功能,并不使用额外进程。网上参考了很多资料,发现只有QuaZip比较适合我的需求。但是QuaZip只提供源码,因此需要自己来编译。

QuaZip简介

QuaZIP is a simple C++ wrapper over Gilles Vollant's ZIP/UNZIP package that can be used to access ZIP archives. It uses the Qt toolkit.

简单来说,QuaZip就是zlib(解压缩软件)的Qt封装类,在Qt开发环境中非常好用。

编译步骤

  1. 在VS中下载Qt插件(全名Qt Visual Studio Tools)并安装,安装后配置下插件使用的Qt版本。

  2. 在sourceforge官网下载QuaZip源码,并解压缩。

  3. 用插件打开QuaZip解压缩目录下quazip子目录中的quazip.pro工程文件(VS会提示重新生成配置文件,选择“是”)。

  4. 下载zlib的源代码,并解压缩。

  5. 在VS项目属性中添加解压后的zlib源文件,具体请百度。

  6. 重点来了,用VS打开zconf.h文件,并将:

    #if 1           /* HAVE_UNISTD_H -- this line is updated by ./configure */
    # include <sys/types.h> /* for off_t */
    # include <unistd.h> /* for SEEK_* and off_t */
    # ifdef VMS
    # include <unixio.h> /* for off_t */
    # endif
    # define z_off_t off_t
    #endif

    这几行替换为以下代码:

    #ifdef HAVE_UNISTD_H
    #include <sys types.h=""> / for off_t /
    #include <unistd.h> / for SEEK_ and off_t */
    #define z_off_t off_t
    #endif

    这是因为windows下没有unistd.h这个文件,这是类unix系统才有的。

  7. 顺利编译通过,生成动态链接库。

感想

  1. 很多开源软件对windows系统的支持不是很好,就像QuaZip,如果你用zlib源码一起编译,那会更蛋疼。
  2. 开软软件的维护更新是一大重要问题,上面那个bug实际上已经存在9年了,一直没有得到修改。

VS源码编译QuaZip(Windows下)的更多相关文章

  1. mpusher 源码编译 for windows X64

    mpusher 源码编译 for windows X64 对于java我是小白,通过一步步的摸索,将经验总结下来,给更多码友提供入门的帮助.一个人的摸索是很困难的,本教程感谢 [MPush开源消息推送 ...

  2. 使用 Redis 源码编译发布 Windows 版 Redis For Windows 发行包

    Redis 是个高性能的键值数据库,现在日常项目开发过程中,目前个人开发项目基本都会用到 Redis,主要是用来做 缓存 和 分布式锁 的底层支持,个人喜欢用 .NET 技术体系,所以一般部署也是用 ...

  3. QTimer源码分析(以Windows下实现为例)

    QTimer源码分析(以Windows下实现为例) 分类: Qt2011-04-13 21:32 5026人阅读 评论(0) 收藏 举报 windowstimerqtoptimizationcallb ...

  4. python在windows(双版本)及linux(源码编译)环境下安装

    python下载 下载地址:https://www.python.org/downloads/ 可以下载需要的版本,这里选择2.7.12和3.6.2 下面第一个是linux版本,第二个是windows ...

  5. git在windows及linux(源码编译)环境下安装

    git在windows下安装 下载地址:https://git-scm.com/ 默认安装即可 验证 git --version git在linux下安装 下载地址:https://mirrors.e ...

  6. flink源码编译(windows环境)

    前言 最新开始捣鼓flink,fucking the code之前,编译是第一步. 编译环境 win7 java maven 编译步骤 https://ci.apache.org/projects/f ...

  7. ffmpeg源码编译环境搭建

    ffmpeg是视频开发最常用到的开源软件,FFmpeg功能强大,用途广泛,提供几乎所有你能够想到的与视频开发相关的操作,许多商业软件都以ffmpeg为基础进行开发定制. FFmpeg: FFmpeg ...

  8. cesium编程中级(二)源码编译

    cesium编程中级(二)源码编译 有些情况下,比如我们自己从Github下载了最新的代码,或者自己临时修改了一点代码,想要编译后的Build文件夹的内容,需要自行编译源码,这里介绍一下编译的方法 下 ...

  9. 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)

    写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...

随机推荐

  1. 部分小程序无法获取UnionId原因

    问题背景 通过观察数据,发现有一部分用户是无法获取到UnionId的 也就是接口返回的参数中不包含UnionId参数 看了微信文档的解释,只要小程序在开放平台绑定,就一定会分配UnionId 网上也有 ...

  2. java 之 原型模式(大话设计模式)

    原型模式,在笔者理解看来就是克隆,当我们在创建第一个对象时,已经给对象赋值完毕,此时我们需要一个当前对象的副本,如果没有原型模式,我们会再次创建一个对象,然后后二次赋值,保证两个对象完全一致, 这样我 ...

  3. 关于apidoc文档生成不了的一个原因

    前几天在写完API后,写注释文档,然后很习惯的去用apidoc取生成注释文档,但是奇怪的事发生了,没有注释的内容,也没有报错:注释代码如下: /* * @api {get} /applet/:id 根 ...

  4. 2964:日历问题-poj

    2964:日历问题 总时间限制:  1000ms 内存限制:  65536kB 描述 在我们现在使用的日历中, 闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰 ...

  5. C语言之循环计数

    #include<stdio.h>int main(){int num,count=0,i=0;scanf("%d",&num);num/=10;count++ ...

  6. 你绝不能错过的效率神器 —— Alfred

    文章首发于[博客园-陈树义],点击跳转到原文<你绝不能错过的效率神器 -- Alfred> Alfred 是 Mac 系统上一款专注于效率提升的著名应用,它能帮你快速打开网页.快速进行自定 ...

  7. Java(概略篇)

    准备 下载并安装Java jdk 和 编辑器(eclipse或Netbeans) 配置环境变量 第一个程序 public class test{ public static void main(Str ...

  8. SolrJ 复杂查询 高亮显示

    SolrJ 复杂查询 高亮显示 上一章搭建了Solr服务器和导入了商品数据,本章通过SolrJ去学习Solr在企业中的运用.笔者最先是通过公司的云客服系统接触的Solr,几百万的留言秒秒钟就查询并高亮 ...

  9. 51Nod 1289 大鱼吃小鱼 栈模拟 思路

    1289 大鱼吃小鱼 栈模拟 思路 题目链接 https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1289 思路: 用栈来模拟 ...

  10. Python搭建Web服务器,与Ajax交互,接收处理Get和Post请求的简易结构

    用python搭建web服务器,与ajax交互,接收处理Get和Post请求:简单实用,没有用框架,适用于简单需求,更多功能可进行扩展. python有自带模块BaseHTTPServer.CGIHT ...