最近寫個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年了,一直沒有得到修改。