持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情。
以下使用vs2017分别针对x86和x64下的debug和release进行编译,为了节省大家的时间,请大家根据自己的需求进行有针对性的操作,本人还在不断探索中,如有错误欢迎指出,如有问题,欢迎交流讨论。写文章不易,阅读之前请给我点个赞吧~
一、win32下的debug和release
-
打开网址 zlib.net/ 进行zlib库的下载,可选择下图中的任意一个,此处选择红框标注的文件
-
对下载的文件进行解压
-
复制解压后的文件夹,粘贴到你的工程目录
-
移动后,找到zlib-1.2.11\contrib\vstudio\vc14这个在你的电脑中的路径,复制 E:\luban\workspace\standardizingJsonFromZip\standardizingJsonFromZip\zlib-1.2.11\contrib\vstudio\vc14,在vs2017中选择文件-打开-项目解决方案-粘贴上面的路径然后选择如图所示的解决方案
-
回到vs2017,我们选择Debug和Win32
-
在工程上右键,仅用于此项目(Project Only)-仅重新生成zlibvc(Rebuild Only zlibvc),得到一个失败项,如下图所示
【解决办法】(1)打开zlib-1.2.11\contrib\masmx86文件夹,这里为E:\luban\workspace\standardizingJsonFromZip\standardizingJsonFromZip\zlib-1.2.11\contrib\masmx86
(2) 使用Notepad++打开bld_ml32.bat(3) 在其中添加/safeseh,如图所示
(4)回到工程,在输出窗口找到下图所示的位置,双击此行命令
(5)找到图中所示的代码行,选中并对其进行注释
(6)粘贴下面这段代码到刚才的位置#if _WIN32_WINNT >= _WIN32_WINNT_WIN8 #if defined(WINAPI_FAMILY_PARTITION) && (!(defined(IOWIN32_USING_WINRT_API))) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #define IOWIN32_USING_WINRT_API 1 #endif #endif #endif(7)保存之后按照步骤6的过程重新编译,此时就成功了
-
对zlibstat按照步骤6 的过程进行编译
-
在整个项目上,右键-重新生成解决方案(Rebuild Solution)
-
在zlibvc中找到zlibvc.def,将图中版本VERSION 1.2改成1.211
-
选择Release Win32 ,对zlibvc按照步骤6重新编译
-
参照步骤8,对整个项目进行编译
二、x64下的debug和release
-
选择Debug和x64
-
同样的方式对zlibvc进行编译,得到如图的结果
-
zlibvc右键-属性-生成事件(Build Events)-生成前事件(Pre-Build Event)-命令行(Command Line) 点击编辑( 配置选择 Debug x64)
-
将原来的内容改成下图所示的命令行
-
配置选择 Release x64,命令行(Command Line) 点击编辑完成后如下所示。
-
点击确定-应用
-
将配置改成Debug x64,点击确定
-
重新编译zlibvc,成功编译,如下图所示
-
这里将上图提到的警告逐一进行处理,双击警告所在行
将n = len;改成
n = (unsigned int)len;将
len = gz_read(state, buf, len);改成
len = (unsigned int)gz_read(state, buf, len);此处不逐一列举,请根据不同的警告,进行不同的强制转化
-
对zlibvc重新编译,对整个项目重新编译
-
选择Release对整个项目再重新编译
三、x86和x64下的debug和release
- 关闭所有文件,关闭Solution
- 将vc14文件夹,拷贝一份重命名为vc15
- 删除已有的x86和x64文件夹,最后对此项目进行x64和x86版本的Debug/Release,成功编译