libcurl可以用来发送http请求,是c/c++发送http请求常用的库

下载libcurl源码包:

libcurl下载地址:https://curl.haxx.se/download.html

解压到

C:\source\repos\libcurl\curl-7.60.0

打开curl文件夹,以管理员权限运行buildconf.bat。

编译libcurl源码

选择【开始】->[Visual Studio 2017]->[Visual Studio Tools]->[VC]->[x64 Native Tools Command Prompt for VS 2017]

打开后,进入得到对应的curl目录下

cd C:\source\repos\libcurl\curl-7.60.0\winbuild

VS2017 x64 静态编译

输入下面的命令,然后回车,开始编译

nmake /f Makefile.vc mode=static VC=14 MACHINE=x64 DEBUG=no

编译选项说明:

如果想使用动态编译,将mode=static改为mode=dll。(本文仅教静态编译,同时curl官方也不建议使用动态编译)

如果使用x86,将MACHINE=x64改为MACHINE=x86。

如果需要debug版,将DEBUG=no改为DEBUG=yes。

更详细的编译指令及说明可以打开winbuild文件夹中的BUILD.WINDOWS.txt查看。

大概几分钟就可以编译结束(i5-3470 CPU 3.2GHz, 8G内存,7200转机械硬盘)。

待编译结束,关闭控制台界面。

打开C:\source\repos\libcurl\curl-7.60.0\文件夹中的builds文件夹,将名字最短的文件夹备份(如果x64和x86都编译了,则需要备份两个名字最短的文件夹),curl文件夹如果无其他需要则可全部删除。

配置VS2017工程

拷贝上面生成的C:\source\repos\libcurl\curl-7.60.0\builds\libcurl-vc15-x64-release-static-ipv6-sspi-winssl下的include和lib目录到C:\根目录下

1.打开VS2017,新建一个工程testcurl,Select [File]->[NewProject]->[Visual C++]->[Windows Desktop]->[Windows Console Application]

2.右击工程,选择属性,选择[Configurations]选择Release

3.[Platform]选择x64,确认编译时选中的也是Release, x64

4.将刚刚编译生成的文件夹中的include文件夹和lib文件夹添加至工程。(如果编译了debug版libcurl,则应将debug文件夹中的内容添加至debug配置工程)

[Configuration Properties]->[VC++ Directories],选择edit

4.1[Include Directories]里面新增C:\include

4.2[Library Directories]里面新增C:\lib

5.使用了静态编译libcurl,所以需要将CURL_STATICLIB添加至工程

[Configuration Properties]->[C/C++]->[Preprocessor],选择edit

新增CURL_STATICLIB;

6.确认[Configuration Properties]->[C/C++]->[Code Generation]->[Runtime Library]设置为“Multi-threaded DLL(/MD)”

如果没有编译debug版libcurl,则需要将“Runtime Library”改为Release版(即后面不带小写字母d)。同时官方并不建议使用“/MT”或“/MTd”。

7.[Configuration Properties]->[Additional Dependencies]里面新增libcurl_a.lib

8.输入下面由Postman生成的测试代码,Postman是个很好用的调试http接口的工具,建议简单学习一下:


#include "stdafx.h" // 需要下面的库才能通过build,具体为什么需要,以后再研究吧
#pragma comment ( lib, "ws2_32.lib" )
#pragma comment ( lib, "wldap32.lib" )
#pragma comment(lib, "Crypt32.lib") #include <curl/curl.h>
#include <stdio.h>
using namespace std; int main(void)
{
// 初始化
CURL *hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "http://193.28.51.120:8002/api/account/validtoken"); struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer I am a login token");
headers = curl_slist_append(headers, "Content-Type: application/json");
headers = curl_slist_append(headers, "accept: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\"userId\": \"43000010\"}");
CURLcode ret = curl_easy_perform(hnd);
printf("ret0:%d\n", ret);
LONG nHttpCode = 0;
// 取下HTTP返回状态码(200为成功)
ret = curl_easy_getinfo(hnd, CURLINFO_RESPONSE_CODE, &nHttpCode);
printf("ret1:%d\n", ret);
printf("nHttpCode:%d\n", nHttpCode); // 回收资源
curl_easy_cleanup(hnd); return 0;
}

参考:

https://blog.csdn.net/cym1990/article/details/79851039

https://blog.csdn.net/DaSo_CSDN/article/details/77587916

vs2017编译并配置libcurl入门教程的更多相关文章

  1. Win10 + vs2017 编译并配置tesseract4.1.0

    tesseract 是一个开源的OCR (Optical Character Recognition , 光学字符识别) 引擎,本文就介绍一下自己在编译 tesseract4.1.0时遇到的一些坑,希 ...

  2. ubuntu 16.04源码编译和配置caffe详细教程 | Install and Configure Caffe on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/b90033a9/,欢迎阅读! Install and Configure Caffe on ubuntu 16.04 Series ...

  3. 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/19809337 作者:毛星云(浅墨 ...

  4. 《Visual C++ 2010入门教程》系列二:安装、配置和首次使用VS2010

    作者:董波 日期:2010.6.15 写在前面 在我还在上学的时候,我选择了C++,最初我用VC6作为我的IDE,我看过很多本C++的教材,有的适合我,有的不适合我,其中有一本叫<Visual ...

  5. 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0 +VS 2013 开发环境配置

    图片太多,具体过程参照: [OpenCV入门教程之一] 安装OpenCV:OpenCV 3.0.OpenCV 2.4.8.OpenCV 2.4.9 +VS 开发环境配置 说下我这边的设置: 选择deb ...

  6. PyCharm 2017 官网 下载 安装 设置 配置 (主题 字体 字号) 使用 入门 教程

    一.安装 Python 3.6 首先,要安装好 Python 3.6.如果你还没有安装,可以参考咪博士之前的教程 Python 3.6.3 官网 下载 安装 测试 入门教程 (windows) 二.官 ...

  7. Spring Cloud 入门教程 - 搭建配置中心服务

    简介 Spring Cloud 提供了一个部署微服务的平台,包括了微服务中常见的组件:配置中心服务, API网关,断路器,服务注册与发现,分布式追溯,OAuth2,消费者驱动合约等.我们不必先知道每个 ...

  8. qt5.11.2+vs2017环境下配置pcl1.8.1以及第三方依赖库vtk的编译

    1.准备工作 我所用的开发环境是win10下的qt5.11.2配置了vs2017的编译器,根据自己所用的VS的版本去官网下载对应版本的pcl库,如下 PCL-1.8.1-AllInOne-msvc20 ...

  9. Spring Cloud 入门教程(三): 配置自动刷新

    之前讲的配置管理, 只有在应用启动时会读取到GIT的内容, 之后只要应用不重启,GIT中文件的修改,应用无法感知, 即使重启Config Server也不行. 比如上一单元(Spring Cloud ...

随机推荐

  1. pandas之DateFrame 数据过滤+遍历行+读写csv-txt-excel

    # XLS转CSV df = pd.read_excel(r'列表.xls') df2 = pd.DataFrame()df2 = df2.append(list(df['列名']), ignore_ ...

  2. Python库-re(正则表达式)

    re库是python的一个标准库,不需要自己用pip额外下载,直接调用即可. 下面介绍以下库中函数的作用. 1.re.compile(patter, flags=0) patter是一个正则表达式字符 ...

  3. android之ffmpeg:设置cygwin

    开发android ndk 的时候需要一个编译工具编译c程序,ndk需要linux下编译,所以win环境下提供Cygwin模拟linux编译C android-ndk 较低版本的这个工具的配置网上很多 ...

  4. jmetr _MD5加密_获取签名

    要达到的目的: app每个请求里面 请求头都带有一个 sign 的参数, 他的值是通过 开发自己设计的拼接方式 再通过md5加密生成 我们就是要生成这个sign的值出来 准备: 和开发要到签名组成公式 ...

  5. 多分类下的ROC曲线和AUC

    本文主要介绍一下多分类下的ROC曲线绘制和AUC计算,并以鸢尾花数据为例,简单用python进行一下说明.如果对ROC和AUC二分类下的概念不是很了解,可以先参考下这篇文章:http://blog.c ...

  6. Easyui combotree 获取自定义ID属性方法

    1.设置属性 <input id="cc" class="easyui-combotree" data-options="url:'tree_d ...

  7. HTML转义字符表

  8. 【学习笔记】Markdown入门

    Markdown入门 最近把博客园的编辑器换成了Markdown.   语法入门 Markdown确实好用,本来我想总结一下常用Markdown的语法,但有下面这篇文章在,我实在是不敢画蛇添足了. 基 ...

  9. 多个else if语句

    public class demo { public static void main(String[] args) { boolean examIsDone = true; int score = ...

  10. SCI 美国《科学引文索引》(Science Citation Index, 简称 SCI )

    科学引文索引 编辑锁定同义词SCI(科学引文索引)一般指科学引文索引   美国<科学引文索引>(Science Citation Index, 简称 SCI )于1957 年由美国科学信息 ...