VS源码编译QuaZip(Windows下)
最近写个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开发环境中非常好用。
编译步骤
-
在VS中下载Qt插件(全名Qt Visual Studio Tools)并安装,安装后配置下插件使用的Qt版本。
-
在sourceforge官网下载QuaZip源码,并解压缩。
-
用插件打开QuaZip
解压缩目录下
的quazip
子目录中的quazip.pro
工程文件(VS会提示重新生成配置文件,选择“是”)。 -
下载zlib的源代码,并解压缩。
-
在VS项目属性中添加解压后的zlib源文件,具体请百度。
-
重点来了,用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系统才有的。
-
顺利编译通过,生成动态链接库。
感想
- 很多开源软件对windows系统的支持不是很好,就像QuaZip,如果你用zlib源码一起编译,那会更蛋疼。
- 开软软件的维护更新是一大重要问题,上面那个bug实际上已经存在9年了,一直没有得到修改。