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. 安装sphinx报错(undefined reference to `libiconv_open' 、undefined reference to `libiconv'、undefined reference to `libiconv_close'、make[1]: *** No rule to make target `all'. Stop. 、make: *** [all-recursive

    (为知笔记copy过来格式有变,希望对遇到此问题的童鞋有帮助) 具体错误: Thank you for choosing Sphinx! [root@vm-vagrant csft-4.1]# mak ...

  2. C++直接初始化和复制初始化1

    这篇文章主要介绍了C++直接初始化与复制初始化的区别深入解析,是很多C++初学者需要深入了解的重要概念,需要的朋友可以参考下   C++中直接初始化与复制初始化是很多初学者容易混淆的概念,本文就以实例 ...

  3. STL容器的resize方法

    刚才写DFS程序,为了加个创建DFS树然后再次遍历的功能,把初始化的代码给封装到init()函数里,然后直接调用之后对同样是邻接表表示的DFS树进行DFS. 然后令人诧异的是竟然没有打印结果,调试发现 ...

  4. python 线程/进程模块

    线程的基本使用: import threading # ###################### 1.线程的基本使用 def func(arg): print(arg) t = threading ...

  5. JVM调优总结(这个总结得比较全面)

    堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统下,一般限制在1.5G~2G:64为操 ...

  6. NoSQL v.s. RDB

    RDB 相对于 NoSQL 的劣势: 1. 集中式单点架构 2. 固定的数据模型: 可扩展性差,缺乏处理半结构化和非结构化数据的能力. 3. 扩容成本高:处理海量数据时存在性能瓶颈,大数据时代的存储需 ...

  7. python学习(二十一) Python 中的链式赋值

    Python的链式赋值如下:

  8. ODPS基础

    遇到一个项目需求是统计128张分库分表的数据表记录的最大id,通过单表查询计算非常费时,也无法应对分表数更多的情况,因此考虑到通过odps进行任务发布和运算 在云端 http://d2.alibaba ...

  9. leetcode724

    public class Solution { public int PivotIndex(int[] nums) { ) { ; } ; ]; if (left == right) { ; } ; ...

  10. Django学习笔记之Class-Based-View

    Django写的多了,有些问题才逐渐认识到. 比如有一个view比较复杂,调用了很多其他的函数.想要把这些函数封装起来,怎么办? 当然,可以用注释#------view------这样将函数隔离开,这 ...