环境:win7 x64 + vs2013
1.用vs2013打开zlib-1.2.8\contrib\vstudio\vc11\zlibvc.sln进行编译
包含了下面的的多个项目:
miniunz:一个解压的测试例子(下面所使用的测试使用用例)
minizip:一个压缩的测试例子
testzlib:使用zlib静态库,并测试压缩/解压效率
testzlibdll:使用zlib动态库,并测试压缩/解压效率
zlibstat:生成zlib静态库的项目
zlibvc:生成zlib动态库的项目
2.error LNK2026: 模块对于 SAFESEH 映像是不安全的。
解决办法:
①zlibvc-属性-配置属性-链接器-命令行 在后面加上 /SAFESEH:NO
②testzlib-属性-配置属性-链接器-命令行 在后面加上 /SAFESEH:NO
3.fatal error LNK1118: “VERSION”语句中的语法错误
解决办法:找到报错位置,zlibvc.def文件第4行的VERSION语句行,直接删除该行或者在行首加上;号进行注释。
4.成功编译后
①项目生成的文件都在zlib-1.2.8\contrib\vstudio\vc11\x86\
②将zlib-1.2.8\contrib\vstudio\vc11\x86\ZlibDllDebug中的zlibwapi.dll拷贝到MiniUnzipDebug文件夹中
③在命令窗口cmd中运行miniunz.exe
5.报错:无法定位程序输入点CreateFile2于动态链接库KERNEL32.dll上
解决办法:
①找到iowin32.c文件,在对应位置上增加宏判断#if _WIN32_WINNT >= _WIN32_WINNT_WIN8 和 #endif
②不要忘记这一步!!!
zlibvc-属性-配置属性-C/C++-预处理器定义 加入一行 _WIN32_WINNT=0x0601
6.
①清理解决方案!!!
②重新编译拷贝zlibwapi.dll到MiniUnzipDebug文件夹中
③在命令窗口cmd中运行miniunz.exe,正常运行并显示命令列表,如下(表示已经可以正常运行):
7.使用miniunz.exe对一个压缩文件1.zip进行解压测试,出现错误Cannot open 1.zip or 1.zip.zip错误,如下图
解决办法有两种:
第①种:屏蔽miniunz.c中对应的代码,重新编译miniunz项目
第②种:将iowin32.c文件第247行与374行的 FILE_CURRENT 都改为 dwMoveMethod即可,重新编译拷贝zlibwapi.dll
参考博客链接: