VS2012编译LibZip库

LibZip库是解压缩zip文件的C库。

中文的网站目前还没有找到相关的编译方法,找了一篇英文文档加上自己的实验修改了一下:

编译步骤如下:

  1. 首先先下载CMake,我下载的是2.8版本。

  2. libzip要引用 zlib 库所以要先下载,我下载的是 zlib-1.2.8,把它解压在如 C:\LibZip文件夹中.

  3. 如果是在windows 64位的环境下,请在 C:\LibZip\CMakeLists.txt 的最后添加一下几行文本:

    • if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND MSVC)
        set_target_properties(zlibstatic PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64")
      endif()
  4. 下载 libzip 库,我下载的是libzip-0.11.1,也将其解压在C:\LibZip文件夹中

  5. 打开 VS2012本机工具命令提示

  6.  输入以下命令:cd C:\LibZip\zlib-1.2.8

  7. 然后输入命令:mkdir build 创建build文件夹

  8. 再输入命令:cd build 进入build文件夹
  9. 然后输入命令:cmake .. -G"Visual Studio 11" -DCMAKE_INSTALL_PREFIX="C:\LibZip\installed\zlib"   将安装路径设置为 C:\LibZip\installed\zlib 否则是默认的 C:\Program Files\zlib. 如果是 64-bit Windows, 则使用 "Visual Studio 11 Win64" 作为 -G 的参数.

  10. 然后输入命令:msbuild /P:Configuration=Debug INSTALL.vcxproj

  11. 然后再输入命令:msbuild /P:Configuration=Release INSTALL.vcxproj

  12. 再输入命令:cd C:\LibZip\zlib-1.2.8

  13. 输入命令mkdir build  创建build文件夹

  14. 再输入命令: cd build  进入build文件夹

  15. 输入命令:
    cmake .. -G"Visual Studio 11" -DCMAKE_PREFIX_PATH="C:\LibZip\installed\zlib"
    设置zlib库文件的路径,如果是 64-bit Windows, 则使用 "Visual Studio 11 Win64" 作为 -G 的参数.

结果会生成 C:\LibZip\zlib-1.2.8\build\libzip.sln. 但是直接编译的话可能会遇到问题,要先更改以下几个地方:

将文件zipconf.h中的 #include <inttypes.h> 改为 #include <stdint.h>; 如果代码中的 snprintf 语句提示错误则将其改为要改为 _snprintf. 然后将C:\LibZip\zlib-1.2.8\lib\zip_set_file_compression.c文件中的第63行zip_int32_t old_method = (e->orig == NULL ? ZIP_CM_DEFAULT : e->orig->comp_method);的变量声明zip_int32_t old_method放在最前面,因为它是C代码文档。否则会出现莫名其妙的缺少“;”的错误。


zlib是提供数据压缩用的函式,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在1995年5月1日发表。zlib使用DEFLATE算法,最初是为libpng函式所写的,后来普遍为许多软件所使用。此函式为自由软件,使用zlib授权。截至2007年3月,zlib是包含在Coverity的美国国土安全部赞助者选择继续审查的开源项目。 qlibzip 是基于zlib的一个实用程序,使用Qt和Windows一些底层API实现,它主要用于将文件夹压缩到一个zip文件,或将一个zip文件解压缩到文件夹。 //------------------------------------------------------------------------------ // Description: Compress files to a ZIP file. // Parameter: sourceFiles Source files, supporting wildcards. // Parameter: destFile The ZIP file path. // Return Value: true/false. //------------------------------------------------------------------------------ extern "C" bool ZipCompress(const QString &sourceFiles, const QString &destFile); //------------------------------------------------------------------------------ // Description: Extract files from a ZIP file. // Parameter: sourceFile Source ZIP file. // Parameter: destFolder The folder to output files. The parent of the // specified folder MUST exist. // Return Value: true/false. //------------------------------------------------------------------------------ extern "C" bool ZipExtract(const QString &sourceFile, const QString &destFolder); //------------------------------------------------------------------------------ // Description: Extract special file from a ZIP file into memory block. // Parameter: sourceFile Source ZIP file. // Parameter: entryName Special entry name in ZIP file. // Return Value: Extracted memory block. //------------------------------------------------------------------------------ extern "C" QByteArray ZipExtractItem(const QString &sourceFile, const QString &entryName); 具体实例请看demo文件夹。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值