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

zlib 2.1.8 编译遇到的问题以及解决方法的更多相关文章

  1. Android 源码编译及常见错误及解决方法

    最近要往arm开发板上移植android系统,大大小小的问题遇到了太多太多,都是泪啊.本人初接触嵌入式开发,对问题的根源不是太了解,不过好在每解决一个问题,便记录一下.话不多说,正式罗列问题: hos ...

  2. 源码编译apache报错的解决方法

    源码编译apache报错的解决方法   问题介绍 在源码编译安装httpd时,./configure执行无错误,到make时就报错,在网络上搜索了很多文章,很多方法如换apr-util的低版本并不能很 ...

  3. c++函数模板作为类的成员函数,编译报错LNK2019的解决方法

    为了使某个类的成员函数能对不同的参数进行相同的处理,需要用到函数模板,即template<typename T> void Function(). 编译时报错LNK2019 解决方法: 1 ...

  4. Cordova编译报AAPT错误的解决方法

    因为项目中同时使用cordova-hot-code-push-plugin和phonegap-plugin-barcodescanner,编译时报错:AAPT: error: resource and ...

  5. Cordova - XCode10编译热更新插件错误解决方法!

    操作系统:OSX10.14 XCode:10.1 热更新插件:https://github.com/nordnet/cordova-hot-code-push 这个热更新插件,在安卓下编译,没有问题, ...

  6. 16种C语言编译警告(Warning)类型的解决方法

    当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息.警告信息可能意味着程序中隐含的大错误,也可能确实没有问题.对于警告的正确处理方式应该是:尽可能地消除之.对于编译程序给出的每个警告 ...

  7. eclipse3.7以后编译代码提示ambiguous 的解决方法

    Eclispe3.7以后在使用可变函数时可能会遇到这种编译错误的问题 The method is ambiguous 正确的解决方法是:  在eclipse.ini -vmargs后面添加  -Dto ...

  8. Spring编译后没有xml配置文件解决方法

    问题描述 在使用Maven来构建Spring项目的时候,使用下面代码来读取Spring配置文件. ClassPathXmlApplicationContext context = new ClassP ...

  9. ios5 xcode 4.2 中 release显示编译警告或错误的解决方法

    转自:http://lizi464789754.blog.163.com/blog/static/1689370852011924113245778/ 由于 iOS5 xcode4.2 引入了ARC ...

随机推荐

  1. js通过DOM改变html和css

    1.改变html输出流,通过document.write() 直接向 HTML 输出流写内容 <body> <p>段落</p> <script> doc ...

  2. P3332 [ZJOI2013]K大数查询(线段树套线段树+标记永久化)

    P3332 [ZJOI2013]K大数查询 权值线段树套区间线段树 把插入的值离散化一下开个线段树 蓝后每个节点开个线段树,维护一下每个数出现的区间和次数 为了防止MLE动态开点就好辣 重点是标记永久 ...

  3. ==和equals的区别。

    1.java中equals和==的区别 值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. 2.==操作比较的是两个变量的值是否相等,对于 ...

  4. Pycharm创建Django项目并访问Django

    Pycharm创建Django项目并访问Django 一.Django插件 如果没有Django插件,需要先安装Django插件. 1,首先点击Default Settings,打开设置页面: 2,打 ...

  5. Excel vba map/dictionary

    今天在调整一生成java代码的工具时,要用到在不同语言间互转数据类型的逻辑,原来的代码中根据excel记录的行号来计算,再到另外一个collection中获取,个人想着这也太土鳖了,于是搜了下,在vb ...

  6. 20145319 《网络渗透》免考—API拦截技术

    20145319 <网络渗透>免考-API拦截技术 概述 本次实验在window环境下进行,主要通过编写hook代码和注入程序,将我们的hook代码通过dll文件的形式注入到目标中,拦截其 ...

  7. 设置Eclipse具有字母自动联想

    Window->Preferences->Java->Editor->ContentAssist(内容助手)里面的Enable auto activation里面第二行再加上a ...

  8. Spring 学习——Bean容器

    Bean容器初始化 基础 org.springframework.beans org.springframework.context BeanFactory提供配置结构和基本功能,加载并初始化Bean ...

  9. 王之泰201771010131《面向对象程序设计(java)》第一周学习总结

    王之泰201771010131<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.co ...

  10. Python3 tkinter基础 Listbox for+insert 将list中元素导入listbox中

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...