VS2017编译libcurl(zlib+openssl+libssh2)

所有步骤全程亲自操作,成功编译并可复现每一步。

文章目录

  • 前言
  • 一、 zlib编译
  • 二、 OpenSSL 3.0.1编译
  • 三、 libssh2编译
  • 四、 curl编译
  • 总结


前言

在UE4.26.2中内置了libcurl库,版本是curl-7.55.1及之前的,项目中使用该库后出现几百个漏洞,在最新版本中已将漏洞修复,故更新libcurl最新版本库。使用libcurl库需要zlib和openssl和libssh2的支持,在网上看了其它大神写的文章,有的使用已编译好的.lib,有的步骤有缺失,现记录libcurl库及需它支持的库的完整编译方案。


提示:以下是本篇文章正文内容,下面案例可供参考

一、 zlib编译

  1. 环境准备
    zlib:zlib-1.2.11 http://www.zlib.net/
    VS2017编译libcurl(zlib+openssl+libssh2)_第1张图片
  2. 步骤
    1) 导入zlibvc.vcxproj (目标所在目录: xxx\zlib-1.2.11\contrib\vstudio\vc14)
    2) 更改zlibvc部分属性:
    配置管理器为:release x64
    【常规】->【目标文件名】内容改为zlib_zip1211;
    【C/C++】->【预处理器定义】更改ZLIB_WINAPI–>ZLIB_DLL (为了编译出的dll可以使用zip相关接口)
    3) 编译
    编译成功
    VS2017编译libcurl(zlib+openssl+libssh2)_第2张图片

lib库目录如下:
VS2017编译libcurl(zlib+openssl+libssh2)_第3张图片
include包含目录如下:
VS2017编译libcurl(zlib+openssl+libssh2)_第4张图片

二、 OpenSSL 3.0.1编译

  1. 环境准备
    openssl:OpenSSL 3.0.1
    直接从github上clone仓库:git clone https://github.com/openssl/openssl.git
    zlib:zlib-1.2.11 (上述zlib编译结果)
    步骤
    编译前仔细阅读以下INSTALL 和 NOTES.WIN 这两个文件,版本1.0.2对应的文件叫 INSTALL.W32和INSTALL.W64,也不一样,编译过程基本上都在这两个文件里面。
    1)安装perl和汇编工具,按照NOTES.WIN里面推荐的去安装 ActivePerl和nasm,一般安装最新版即可。
    2)以管理员身份打开VS2017的命令行程序,本文编译x64版本环境,打开 “适用于VS 2017的X64本机工具命令提示”。在命令行中切换至OpenSSL 3.0.1解压根目录,按照如下命令开始编译
>> perl Configure VC-WIN64A --prefix=F:\soft\curl7.80_3\openssl\build --with-zlib-include=F:\soft\curl7.80_3\zlib-1.2.11 --with-zlib-lib=F:\soft\curl7.80_3\zlib-1.2.11\contrib\vstudio\vc14\x64\ZlibDllRelease\zlibwapi.lib zlib-dynamic
# VC-WIN64A:64位版本编译 
# --prefix:编译结果安装目录
# --with-zlib-include:zlib库包含目录
# --with-zlib-lib:zlib库导入库文件
# zlib-dynamic:zlib以dll形式引入
>> nmake
>> nmake test
>> nmake install
>> nmake clean

nmake编译配置
VS2017编译libcurl(zlib+openssl+libssh2)_第5张图片
nmake编译,等待几分钟即可完成
在这里插入图片描述
编译完成
在这里插入图片描述

include包含目录如下:
VS2017编译libcurl(zlib+openssl+libssh2)_第6张图片
lib目录如下:
VS2017编译libcurl(zlib+openssl+libssh2)_第7张图片

三、 libssh2编译

  1. 环境准备
    libssh2:libssh2-1.10.0
    直接从github上clone仓库(官方网站下载的libssh2库用VS打开后提示找不到libssh2.dsp,暂不知道是什么原因,故改用此库):git clone https://github.com/winlibs/libssh2.git
    zlib:zlib-1.2.11 (上述zlib编译结果)
    openssl:OpenSSL 3.0.1 (上述openssl编译结果)

  2. 步骤
    1)vs2017项目准备
    libssh2-1.10.0解压根目录\win32\libssh2.dsw项目导入。
    VS2017编译libcurl(zlib+openssl+libssh2)_第8张图片
    本文环境只编译OpenSSL DLL Release | x64。(以上图中红框处如果只有X86平台,可以添加X64平台,添加方式请看另一篇:VS2017项目配置X86改配置x64位)

2)配置【Windows SDK 版本】和【平台工具集】。

  • libssh2配置
    【VC++目录】->【包含目录】更新openssl include 和 zlib include
    (这里就是【xxx\zlib-1.2.11】和【xxx\openssl\build\include】)
  • tests项目配置
    【VC++目录】->【库目录】更新openssl lib 和 zlib lib
    (这里就是【xxx\zlib-1.2.11\contrib\vstudio\vc14\x64\ZlibDllRelease】和【xxx\openssl\build\lib】)
    【链接器】->【输入】更新导入库名字
    libcrypto.lib libssl.lib zlibwapi.lib (上述编译的结果)
  1. 编译完成
    VS2017编译libcurl(zlib+openssl+libssh2)_第9张图片
    include目录如下:
    VS2017编译libcurl(zlib+openssl+libssh2)_第10张图片
    lib目录如下:
    VS2017编译libcurl(zlib+openssl+libssh2)_第11张图片

四、 curl编译

  1. 环境准备
    curl:curl-7.80.0
    直接从github上clone仓库:git clone https://github.com/curl/curl.git
    zlib:zlib-1.2.11 (上述zlib编译结果)
    openssl:OpenSSL 3.0.1(上述openssl编译结果)
    libssh2:libssh2-1.10.0 (上述libssh2编译结果)

  2. 步骤
    1)vs2017项目准备

  • 生成工程
    执行curl/projects文件下generate.bat,生成一个windows文件,文件夹下面有VS的工程,我选择的VC15。
    VS2017编译libcurl(zlib+openssl+libssh2)_第12张图片
  • 打开curl-all.sln工程
    VS2017编译libcurl(zlib+openssl+libssh2)_第13张图片
  • 选择编译的项目:
    VS2017编译libcurl(zlib+openssl+libssh2)_第14张图片
  • 我先选择LIB Release执行,执行成功了。
    VS2017编译libcurl(zlib+openssl+libssh2)_第15张图片
    2)编译
    本文环境只编译LIB Release - LIB OpenSSL - LIB LibSSH2 | x64。
    VS2017编译libcurl(zlib+openssl+libssh2)_第16张图片

配置【Windows SDK 版本】和【平台工具集】。

  • libssh2配置
    【VC++目录】->【包含目录】更新openssl include 和 zlib include以及 libssh2 include
    (这里就是【xxx\zlib-1.2.11】、【xxx\openssl\build\include】和【xxx\libssh2\include】)
    【C/C++】->【预处理器】添加HAVE_ZLIB_H (zlib的支持)
  • tests项目配置
    【VC++目录】->【库目录】更新openssl lib 和 zlib lib以及 libssh2 lib
    (这里就是【xxx\zlib-1.2.11\contrib\vstudio\vc14\x64\ZlibDllRelease】和【xxx\openssl\build\lib】和【xxx\libssh2\win32\Release_lib】)
    【链接器】->【输入】更新导入库名字
    libcrypto.lib libssl.lib zlibwapi.lib libssh2.lib (上述编译的结果)
  1. 编译成功
    在这里插入图片描述
    include包含目录如下:
    VS2017编译libcurl(zlib+openssl+libssh2)_第17张图片
    lib库目录如下:
    VS2017编译libcurl(zlib+openssl+libssh2)_第18张图片

总结

  1. 按照上述配置环境和编译即可编译成功,如在预处理器定义处显示“不同选项”,则需要设置配置管理器
    VS2017编译libcurl(zlib+openssl+libssh2)_第19张图片
    将“所有配置”改为上图中选项即可显示预处理器定义宏
    VS2017编译libcurl(zlib+openssl+libssh2)_第20张图片
  2. 参考
    https://blog.csdn.net/xys206006/article/details/102593075
    https://www.cnblogs.com/damizhou/p/11744096.html
    在此,特别感谢大神王斌。
    斌哥,棒棒的!

你可能感兴趣的:(c++,visual,studio)