每天进步一点点:终于搞定了libcurl Windows下编译

在昨天的帖子每天进步一点点:C++ 中使用libcurl 获取返回数据的学习中,大致学会了怎么用libcurl 向网站POST或者GET数据,以及如何将返回数据存储到变量。


(图源 :pixabay)

今天突发奇想,在Windows下测试一下嘛。结果一下子掉坑里了,一整天都在晕如何在Windows下编译。研究了一大堆网页,迷糊到爆炸的时候,才发现人家官方就有Windows下编译指南,我这一天干得都啥事啊。尽管如此,操作起来还是很麻烦,踩了一堆坑,记录如下,备忘以及供需要的朋友参考吧。

步骤

下载源码

首先去github的对应页面下载curl代码,至于在Windows下你是用的git还是直接下我就不管啦,我直接下的zip.

下载好了之后,解压zip文件。

启动编译工具

在开始菜单中查找: 'Developer Command Prompt for VS <version>'

比如我安装的是VS2015,那么对应的工具就是:'Developer Command Prompt for VS2015',启动它,进入命令行窗口。

进入我们解压好的目录,比如我这里:
cd C:\Users\oflyhigh\Downloads\curl-master\curl-master

执行 buildconf.bat

Github的编译文档中没有提到这个,但是这个步骤和重要,否则编译时会出如下错误:

Copying libs...
NMAKE : fatal error U1073: don't know how to make '..\src\tool_hugehelp.c'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft\Visual Studio 14.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.

编译

进入到winbuild目录
cd winbuild

执行编译指令:
nmake /f Makefile.vc mode=static DEBUG=no VC=14 MACHINE=x86

有关编译指令的选项说明请参考:
https://github.com/curl/curl/blob/master/winbuild/BUILD.WINDOWS.txt

对于上述指令而言,编译静态库,关闭调试,目标机器X86,编译工具版本为VC14

测试

编译成功后,我们会在项目目录下生成
builds\libcurl-vc14-x86-release-static-ipv6-sspi-winssl目录,其中包含如下内容:

分别是可执行文件、头文件以及静态库。

然后我们来测试一下我们编译出来的curl.exe是否好用,来试试读取创世块:

curl.exe --data "{\"id\":1,\"jsonrpc\":\"2.0\",\"method\":\"call\",\"params\":[\"database_api\",\"get_block\",[1]]}" https://api.steemit.com


一切正常!

参考文件

H2
H3
H4
3 columns
2 columns
1 column
5 Comments