最近写个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. C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】

    一.引言   今天我们开始讲"行为型"设计模式的第三个模式,该模式是[迭代器模式],英文名称是:Iterator Pattern.还是老套路,先从名字上来看看."迭代器模 ...

  2. IT连创业系列:App产品上线后,运营怎么搞?(中)

    等运营篇写完,计划是想写一个IOS系列,把IT连App里用到和遇到的坑都完整的和大伙分享. 不过写IOS系列前,还是要认真把这个运营篇写完,接下来好好码字!!! 上篇说到,我们计划去一次富士康门口,拉 ...

  3. 【深圳】大湾区第三次.NET技术交流会(网络直播)

    活动简介 云.devops.微服务.容器是现在这个发展阶段的软件形态, 本次活动我们围绕这些话题介绍.NET生态下的发展.SQL Server 2017可根据需要运行本地部署的SQL Server,当 ...

  4. 13. ZooKeeper最佳实践

    以下列举了运行和管理ZooKeeper ensemble的一些最佳实践: ZooKeeper数据目录包含快照和事务日志文件.如果autopurge选项未启用,定期清理目录是一个好习惯.另外,管理员可能 ...

  5. 虚拟机Ubuntu无法上网问题解决过程

    查看了网上大部分经验贴,都没有解决问题,只好自己思考琢磨,以下是思考解决过程 1.查看文件配置 2.查看虚拟机网络配置方式 3.查看硬件驱动是否存在 4.配置完文件ifcfg-eth0后重启,无效(虚 ...

  6. javascript语言基础

    js的基本语法 /* 多行注释 * */ //单行注释 // 变量赋值 默认以换行符作为结束符,有分号以分号作为结束符号 var i; i=10; s="hello"; var b ...

  7. 单词接龙dfs洛谷

    题目传送门:https://www.luogu.org/problem/show?pid=1019#sub 典型的爆搜,每次更新最大龙长度即可 搜索每个字符串编号,与已经连接好的字符串进行比较,以此往 ...

  8. Servlet与Jsp的结合使用实现信息管理系统二

    PS:前面说了抽取框架的搭建,接着就要我们开始进入网址的时候就要查到全部信息并显示在首页,我们用到的MySql数据库,具体步骤是: 创建数据库,创建表,添加信息 项目中调入mysql的jar包 mys ...

  9. (高级篇)php结合redis实现高并发下的抢购、秒杀功能

    抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存 ...

  10. Nginx实现https网站配置

    咱们下面以google代理实现的方式来实现https.注意这里的https与google的https无关. 代码如下.有备注/usr/local/nginx/config/vhost/hk.cn331 ...