zlib 1.2.8 编译

文章来自:http://www.cnblogs.com/chevin/p/5676317.html
环境: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

  1. vc 创建win32工程,在]win32下调用zlib库的函数compress编译错误(error LNK2019: 无法解析的外部符号 _compress?

    zlib 1.2.8源代码包中\contrib\vstudio\readme.txt中说的在使用zlib要预定义宏ZLIB_WINAPI,否则无法编译通过。

    • To use zlibwapi.dll in your application, you must define the macro ZLIB_WINAPI when compiling your application’s source files.
      链接时,除了#pragma comment(lib, “zlibvc.lib”)添加引入库外,还要注意Character Set的设置要统一。否则也会出现链接错误,提示找不到_compress外部变量。

    工程属性->C++->预定义宏->预处理器定义 .增加ZLIB_WINAPI这个宏

参考博客链接:

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

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

猜你喜欢

转载自blog.csdn.net/lingdi2000/article/details/53813964