Windows 下编译 libcurl 库

近期的项目中用到了文件的上传和下载功能,于是就发现了 libcurl 网络传输库。要使用该库,当然首先就需要进行编译生成 lib 或 dll 库,本文将介绍在 Windows 平台下使用 Visual Studio 2015 工具编译 libcurl 库的基本步骤。

下载libcurl源代码,压缩包大小大概5MB,下载完成解压到一个合适位置。在目录/projects/Windows下有可以找到一系列的Visual studio的解决方案。打开与自己安装版本对应的解决方案,在配置管理器中可以看到一系列的解决方案配置,大体是以静态库还是动态库以及是否支持OpenSSL作为区分的,如果选择不支持OpenSSL版本,直接就可以编译通过了。但是不支持OpenSSL的版本将不支持https协议,然而现在大多数的访问都是基于https协议的,因此我们需要选择支持OpenSSL的方案配置,但是直接编译将会得到一些头文件无法打开和依赖库不存在错误,其原因是libcurl的源代码中并不包含OpenSSL的源代码,因此我们需要首先下载并编译OpenSSL库。

编译OpenSSL需要使用开始菜单中Virtual studio目录下的“本机工具命令提示符”自己选择使用x86还是x64位的版本。

编译OpenSSL需要注意一下几点:

  • 下载并安装perl。
  • 下载源代码 1.0.X版本,最新版本变化很大,可能需要比较多的手动配置。
  • 配置使用 perl Configure VC-WIN32(或者debug-VC-WIN32) no-asm
  • 编译 nmake -f ms\ntdll.mak
  • 编译完成需要运行测试 nmake -f ms\ntdll.mak test
  • 如果需要安装使用 nmake -f ms\ntdll.mak install

编译完成之后根据编译libcurl时的错误提示配置一下OpenSSL的头文件和库文件位置,即可通过libcurl的编译了。
如果想做个简单实验,可以在libcurl的网站找到示例代码。


分割线,2019/04/22
使用最新的OpenSSL代码(1.1.X)的说明
1.0.X版本的OpenSSL虽然也支持多线程,但是须要我们自己实现两个回调函数,而1.1.X版本之后已经不再了,对于我们使用者无疑方便了一些,但同时也须要注意两个问题。

最新的编译说明:(源代码中的INSTALL文件中有非常详细的说明)

Windows 下编译 libcurl 库_第1张图片
openssl编译.png

1.0.X版本编译之后会生成libeay32.libssleay32.lib这两个库文件,我在使用的时候须要连接这两个库。但是1.1.X代码编译之后已经不会再生成这两个库文件,取而代之的是libssl.liblibcrypto.lib,因此在进行代码移植的时候须要注意替换一下。
比较坑爹的是官方文档中并没有对此进行说明 -_-''

Windows 下编译 libcurl 库_第2张图片
TIM图片20190422110449.png

你可能感兴趣的:(Windows 下编译 libcurl 库)