zlib 2.1.8 编译遇到的问题以及解决方法
环境: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 编译遇到的问题以及解决方法的更多相关文章
- Android 源码编译及常见错误及解决方法
		最近要往arm开发板上移植android系统,大大小小的问题遇到了太多太多,都是泪啊.本人初接触嵌入式开发,对问题的根源不是太了解,不过好在每解决一个问题,便记录一下.话不多说,正式罗列问题: hos ... 
- 源码编译apache报错的解决方法
		源码编译apache报错的解决方法 问题介绍 在源码编译安装httpd时,./configure执行无错误,到make时就报错,在网络上搜索了很多文章,很多方法如换apr-util的低版本并不能很 ... 
- c++函数模板作为类的成员函数,编译报错LNK2019的解决方法
		为了使某个类的成员函数能对不同的参数进行相同的处理,需要用到函数模板,即template<typename T> void Function(). 编译时报错LNK2019 解决方法: 1 ... 
- Cordova编译报AAPT错误的解决方法
		因为项目中同时使用cordova-hot-code-push-plugin和phonegap-plugin-barcodescanner,编译时报错:AAPT: error: resource and ... 
- Cordova - XCode10编译热更新插件错误解决方法!
		操作系统:OSX10.14 XCode:10.1 热更新插件:https://github.com/nordnet/cordova-hot-code-push 这个热更新插件,在安卓下编译,没有问题, ... 
- 16种C语言编译警告(Warning)类型的解决方法
		当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息.警告信息可能意味着程序中隐含的大错误,也可能确实没有问题.对于警告的正确处理方式应该是:尽可能地消除之.对于编译程序给出的每个警告 ... 
- eclipse3.7以后编译代码提示ambiguous 的解决方法
		Eclispe3.7以后在使用可变函数时可能会遇到这种编译错误的问题 The method is ambiguous 正确的解决方法是: 在eclipse.ini -vmargs后面添加 -Dto ... 
- Spring编译后没有xml配置文件解决方法
		问题描述 在使用Maven来构建Spring项目的时候,使用下面代码来读取Spring配置文件. ClassPathXmlApplicationContext context = new ClassP ... 
- ios5 xcode 4.2 中 release显示编译警告或错误的解决方法
		转自:http://lizi464789754.blog.163.com/blog/static/1689370852011924113245778/ 由于 iOS5 xcode4.2 引入了ARC ... 
随机推荐
- js通过DOM改变html和css
			1.改变html输出流,通过document.write() 直接向 HTML 输出流写内容 <body> <p>段落</p> <script> doc ... 
- P3332 [ZJOI2013]K大数查询(线段树套线段树+标记永久化)
			P3332 [ZJOI2013]K大数查询 权值线段树套区间线段树 把插入的值离散化一下开个线段树 蓝后每个节点开个线段树,维护一下每个数出现的区间和次数 为了防止MLE动态开点就好辣 重点是标记永久 ... 
- ==和equals的区别。
			1.java中equals和==的区别 值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. 2.==操作比较的是两个变量的值是否相等,对于 ... 
- Pycharm创建Django项目并访问Django
			Pycharm创建Django项目并访问Django 一.Django插件 如果没有Django插件,需要先安装Django插件. 1,首先点击Default Settings,打开设置页面: 2,打 ... 
- Excel vba map/dictionary
			今天在调整一生成java代码的工具时,要用到在不同语言间互转数据类型的逻辑,原来的代码中根据excel记录的行号来计算,再到另外一个collection中获取,个人想着这也太土鳖了,于是搜了下,在vb ... 
- 20145319 《网络渗透》免考—API拦截技术
			20145319 <网络渗透>免考-API拦截技术 概述 本次实验在window环境下进行,主要通过编写hook代码和注入程序,将我们的hook代码通过dll文件的形式注入到目标中,拦截其 ... 
- 设置Eclipse具有字母自动联想
			Window->Preferences->Java->Editor->ContentAssist(内容助手)里面的Enable auto activation里面第二行再加上a ... 
- Spring 学习——Bean容器
			Bean容器初始化 基础 org.springframework.beans org.springframework.context BeanFactory提供配置结构和基本功能,加载并初始化Bean ... 
- 王之泰201771010131《面向对象程序设计(java)》第一周学习总结
			王之泰201771010131<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.co ... 
- Python3 tkinter基础 Listbox for+insert 将list中元素导入listbox中
			Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ... 
