c++开源库zlib保姆级下载与使用(vs2017——x86和x64下的debug和release编译)

1,043 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情

以下使用vs2017分别针对x86和x64下的debug和release进行编译,为了节省大家的时间,请大家根据自己的需求进行有针对性的操作,本人还在不断探索中,如有错误欢迎指出,如有问题,欢迎交流讨论。写文章不易,阅读之前请给我点个赞吧~

一、win32下的debug和release

  1. 打开网址 zlib.net/ 进行zlib库的下载,可选择下图中的任意一个,此处选择红框标注的文件

    在这里插入图片描述

  2. 对下载的文件进行解压

  3. 复制解压后的文件夹,粘贴到你的工程目录

  4. 移动后,找到zlib-1.2.11\contrib\vstudio\vc14这个在你的电脑中的路径,复制 E:\luban\workspace\standardizingJsonFromZip\standardizingJsonFromZip\zlib-1.2.11\contrib\vstudio\vc14,在vs2017中选择文件-打开-项目解决方案-粘贴上面的路径然后选择如图所示的解决方案

    在这里插入图片描述

  5. 回到vs2017,我们选择Debug和Win32

  6. 在工程上右键,仅用于此项目(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的过程重新编译,此时就成功了

    在这里插入图片描述

  7. 对zlibstat按照步骤6 的过程进行编译

  8. 在整个项目上,右键-重新生成解决方案(Rebuild Solution)

    在这里插入图片描述

  9. 在zlibvc中找到zlibvc.def,将图中版本VERSION 1.2改成1.211

    在这里插入图片描述

    在这里插入图片描述

  10. 选择Release Win32 ,对zlibvc按照步骤6重新编译

  11. 参照步骤8,对整个项目进行编译

二、x64下的debug和release

  1. 选择Debug和x64

  2. 同样的方式对zlibvc进行编译,得到如图的结果 在这里插入图片描述

  3. zlibvc右键-属性-生成事件(Build Events)-生成前事件(Pre-Build Event)-命令行(Command Line) 点击编辑( 配置选择 Debug x64)

    在这里插入图片描述

  4. 将原来的内容改成下图所示的命令行

    在这里插入图片描述

  5. 配置选择 Release x64,命令行(Command Line) 点击编辑完成后如下所示。

    在这里插入图片描述

  6. 点击确定-应用

  7. 将配置改成Debug x64,点击确定

  8. 重新编译zlibvc,成功编译,如下图所示

    在这里插入图片描述

  9. 这里将上图提到的警告逐一进行处理,双击警告所在行

     n = len;
    

    改成

      n = (unsigned int)len;
    

    len = gz_read(state, buf, len);
    

    改成

    len = (unsigned int)gz_read(state, buf, len);
    

    此处不逐一列举,请根据不同的警告,进行不同的强制转化

  10. 对zlibvc重新编译,对整个项目重新编译

  11. 选择Release对整个项目再重新编译

三、x86和x64下的debug和release

  1. 关闭所有文件,关闭Solution
  2. 将vc14文件夹,拷贝一份重命名为vc15
  3. 删除已有的x86和x64文件夹,最后对此项目进行x64和x86版本的Debug/Release,成功编译

    在这里插入图片描述