Windows下QuaZip及zlib压缩库的编译(Cmake + MSVC16-VS2019)

1、下载源代码

zlib:https://github.com/madler/zlib quazip: https://github.com/stachenov/quazip 虽然网上有很多zlib和quazip的编译说明,但大多是关于0.7版本的,如今quazip都已经是1.3版本的 本次编译就是基于1.3版本的编译.。

2、编译zlib
(1)、将CmakeList.txt拖到Cmake-gui中,并在where to build中加入build表示cmake生成的文件路径 (2)、点击configure会弹出选择编译器和位信息(默认64位),如果想改成32位则选择Optional platform 提示:如果选择了64位,则在编译quazip时也必须是64位 选完点击finish (3)、点击Generate(此处一般不会出现问题,下面红字是警告cmake的版本信息),点击Open Project (4)、修改文件及编译 工程目录如下(zlib是动态库目录,zlibstatic是静态库目录,我们修改动态库的,zlibstatic不动) 找到zconf.h头文件后找到如下代码 将此段代码删除extern 删除原因: zlib中定义并使用了ZEXTERN和ZEXPORT两种导出符,由宏来管理,但是quazip只选了ZEXPORT作为导出符,而单纯去掉其中一个会导致出现不符合语法的问题。 修改完后右键点击INSTALL,选择重新生成(注意切换到release版本) 生成后可以在install目录看到如下 将bin下的zlib.dll,lib下的zlib.lib以及include拷贝至自己所需的文件夹下 (我是创建了一个环境变量,这样程序在编译或是运行时都可以找到,我将所有的库头文件都放到此处)

3、编译quazip

(1)、使用CMake配置时需要先加入这两项,这两项表明zlib库的头文件及库的位置 当然你也可以修改CMakeList文件将OFF修改ON,表示使用qt的压缩库,虽然也能编译过去,但是你会发现在后面使用时会报错找不到zlib.h,这是因为quazip没有使用宏定义来控制zlib.h头文件的引入 (2)、点击configure,点击Generate(选编译器,修改生成目录等,此处不在赘述) (3)、打开工程 在此工程中添加宏定义ZLIB_DLL(debug和release都要添加) 原因: zlib中使用ZLIB_DLL控制导入导出符,没有他无法使用导入符,后面会报链接错误 (所以说,linux环境是真干净,没有这么多麻烦事) 编译debug和release版本,QT在debug版本使用release库时会出现问题。
经验分享 程序员 微信小程序 职场和发展