zlib 2.1.8 编译遇到的问题以及解决方法

  • Post author:
  • Post category:其他



环境: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



参考博客链接:



http://blog.csdn.net/drecik__/article/details/50342357



http://blog.csdn.net/drecik__/article/details/50372998


转载于:https://www.cnblogs.com/chevin/p/5676317.html