亲测可用: https://codeantenna.com/a/pJaN3omqjp

What is libcurl ?

libcurl 是一个跨平台的网络协议库,支持 http, https, ftp, gopher, telnet, dict, file, 和 ldap 协议。libcurl 同样支持 HTTPS 证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP 基本表单上传,代理,cookies 和用户认证。想要知道更多关于 libcurl 的介绍,可以到官网 http://curl.haxx.se/上去了解,在这里不再详述。

How install libcurl with Windows and VS2013 ?

libcurl 没有提供编译好的库,需要自己编译,先下载 libcurl 源代码。下载方式:

笔者这里选择官网下载,下载最新版本为 curl-7.67.0,我是 Windows 平台,所以选 zip 文件。

下面介绍 3 种编译方法:

nmake 编译

(1)下载完成后解压,并进入文件夹,运行buildconf.bat

(2)在开始菜单中找到 Visual Studio 2019 文件夹,编译 64 位则右击 x64 Native Tools Command Prompt for VS 2017/2019,编译 32 位则右击 x86 Native Tools Command Prompt for VS 2017/2019,选择管理员方式运行。

(3)进入 curl 文件夹中的 winbuild 文件夹。

(4)2019 + x64 + release + 静态编译:

nmake /f Makefile.vc mode=static VC=15 MACHINE=x64 DEBUG=no
  • 如需动态编译,将 mode=static 改为 mode=dll。(本文仅演示静态编译,同时 curl 官方也不建议使用动态编译)
  • 如需编译为 x86,将 MACHINE=x64 改为 MACHINE=x86。
  • 如需编译为debug版,将DEBUG=no改为DEBUG=yes。
  • 如果你是 VS2019,VC=15 建议改为 VC=14。
  • 更详细的编译指令及说明可以打开 winbuild 文件夹中的 BUILD.WINDOWS.txt 查看。

(5)回车,等待编译完成,关闭控制台界面。编译出的库路径为 C:\Users\xianf\Downloads\curl-7.76.1\builds\libcurl-vc15-x64-release-static-ipv6-sspi-schannel

详细图文教程请参考:Visual Studio(VS2017/VS2019)编译并配置C/C++-libcurl开发环境

nmake 是 Microsoft Visual Studio 中的附带命令,需要安装 VS,即 Windows 上的 make。

如果不了解各个 VS 命令提示工具的区别,可以去看:VS 命令提示工具

Project Setting

(1)新建一个项目。本文选择新建一个名为 Test 的空项目,修改为 Release + x64 配置;

(2)配置 include 和 lib 路径,将以下 lib 添加至工程:

libcurl_a.lib
Ws2_32.lib
Wldap32.lib
winmm.lib
Crypt32.lib
Normaliz.lib

(3)属性 -> 高级 -> 字符集下拉框,使用多字节字符集;

(4)本文使用了静态编译,所以需要将 CURL_STATICLIB 添加至工程;

(5)本文使用了静态编译且没有编译 debug 版 libcurl,所以直接在 Configurations: All Configurations 中将 Runtime Library 选择为 /MD

  • 如果编译了 debug 版 libcurl,请分别在 Configurations: Debug 中选择 /MDdConfigurations: Release 中选择 /MD
  • 如果使用了动态编译,则为 /MTd/MT

Code Test

#include <curl/curl.h>    

int main(int argc, char* argv[]) {
CURL* curl = nullptr;
CURLcode res;
curl = curl_easy_init();
if (curl != nullptr) {
curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");
/* example.com is redirected, so we tell libcurl to follow redirection */
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
/* always cleanup */
curl_easy_cleanup(curl);
} return 0;
}

libcurl cmake complie

如果要使用 libcurl 库进行编译,需要先安装 libcurl 库并配置环境变量。之后在 CMakeLists.txt 文件中添加如下内容:(此时下载最新的即可,无需编译)

find_package(CURL REQUIRED)
include_directories(${CURL_INCLUDE_DIRS})
target_link_libraries(your_target ${CURL_LIBRARIES}) # 其中,your_target 是你的目标程序名称。

然后,使用 CMake 进行编译。在命令行中运行:

cmake .
make

这将在当前目录下生成可执行文件。

如果需要更具体的步骤,建议参考 libcurl 和 CMake 官方文档.

Reference

【C++开源库】Windows 下编译 libcurl 库的更多相关文章

  1. windows 下编译libcurl

    因为linux平台采用了libcurl,有一个程序移植到到windows平台,再linux采用libcurl.在windows下准备也采用该库.在网上搜索了几位同行写的,步骤上面有缺失. 本文将以详细 ...

  2. windows下编译Boost库

    下载源码 boost_1_66_0.7z 生成编译工具 D:\Project\boost_1_66_0> bootstrap.bat 配置Python环境变量(使用VS2017自带的32位pyt ...

  3. windows下编译和安装boost库

    boost是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库. 获取方式 boost提供源码形式的安装包,可以从boost官方网站下载,目前最新版本是1.59.0. 本机上正好有boos ...

  4. 如何在WINDOWS下编译BOOST C++库 .

    如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25   写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0.   1)下载boost ...

  5. 分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目

    分布式版本库--Windows下Git的环境部署以及在GitHub上开源自己的项目 这几天着实忙的焦头烂额,可惜不是搞技术,今天周日,难得闲下来,写篇大家都想学习的Git教程,其实廖雪峰老师的网站已经 ...

  6. 在Ubuntu下编译Assimp库

    在Ubuntu下编译Assimp库 怎样在Ubuntu下编译Assimp库?这是我曾经编译成功后做的笔记,供參考. 1.去以下的站点去下载Assimp库: http://assimp.sourcefo ...

  7. windows下python常用库的安装

    windows下python常用库的安装,前提安装了annaconda 的python开发环境.只要已经安装了anaconda,要安装别的库就很简单了.只要使用pip即可,正常安装好python,都会 ...

  8. [转] Windows下编译OpenSSL

    简述 OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...

  9. Windows下编译objective-C

    Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode   目录 ...

  10. Windows下编译安装 FFmpeg

    在Linux/Mac下编译 ffmpeg是非常方便的.但要在 Windows下编译 ffmpeg还真要花点时间.以下就是在 Windowns下编译ffmpeg的步骤: 一.安装Cygwin 在wind ...

随机推荐

  1. C语言根据公式Cnm= 算出从n个不同元素中取出m个元素(m≤n)的组合数。建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。

    /* 开发者:慢蜗牛 开发时间:2020.5.28 程序功能:开发公式Cnm */ #include<stdio.h> long fact_1(int m); long fact_2(in ...

  2. 在TCP四次挥手中,为什么客户端发送FIN后,还可以发送报文

    在TCP四次挥手中,为什么客户端发送FIN后,还可以发送报文 首先回顾下四次挥手的过程. 第一次挥手:客户端停止发送数据,主动关闭 TCP 连接,处于FIN_WAIT1状态,等待服务端确认. 第二次挥 ...

  3. Linux笔记02: Linux环境_2.1虚拟机软件VMware

    2.1 虚拟机软件VMware 如果直接在计算机上安装多个操作系统,同一个时刻只能运行一个操作系统,切换系统需重启计算机.VMware可以使用户在一台计算机上同时运行多个操作系统(如Windows.L ...

  4. [AGC038E] Gachapon

    Problem Statement Snuke found a random number generator. It generates an integer between $0$ and $N- ...

  5. MybatisPlus的一些高级特性

    1.MybatisPlus多数据源配合 导入相关依赖 <dependency> <groupId>com.baomidou</groupId> <artifa ...

  6. C++ Qt开发:StandardItemModel数据模型组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍Standar ...

  7. NetSuite 开发日记:如何管理多环境自定义列表值

    在 NetSuite 中可以创建自定义列表,列表可用于为其他(自定义)记录上的下拉选项列表值. var rec = record.create({ type: 'customrecord_xx' }) ...

  8. 前端异步编程——async/await

    async 从字面上看就是"异步",它放在函数定义之前,是使该函数在调用时开一个子线程,以不影响主线程的运行. 而 await 经常和 async 组合使用,在 async 定义的 ...

  9. iMessage群发,iMessage群发功能,iMessage群发功能设计,iMessage群发系统

    在数字通讯时代,群发消息已经成为我们日常生活中不可或缺的一部分,无论是商务.社交还是日常沟通,群发功能都大大提高了消息传递的效率和便利性. 而在众多的通讯软件中,iMessage无疑是其中的佼佼者,今 ...

  10. zabbix-agent报错记录

    Too many parameters 由于agent版本差异监控项的参数不一样 , 解决方法升级agent版本 Cannot obtain filesystem information: [2] N ...