C++ 之libcurl网络通讯
官网没有编译好的libcurl库所以需要手动下载然后编译生成libcurl.lib【开发环境win10+vs2017】
- github 页面:https://github.com/curl/curl
- libcurl 官网:https://curl.haxx.se/download.html
下载方式以及版本如图所示:
下载完成解压:
VS控制台进入D:\curl-7.85.0\winbuild
编译命令: 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
查看
编译完成对应的dll或者lib,本文生成的是lib
加载 lib +.h来使用 libcurl
新建一个libcurlDemo的工程,把生成的libcurl连接进来配置如下:
一、配置头文件以及lib目录
二、libcurl_a.lib
Ws2_32.lib
Wldap32.lib
winmm.lib
Crypt32.lib
Normaliz.lib全都加载到工程缺少则会报链接错误
BUILDING_LIBCURL
HTTP_ONLY
添加预处理:
解决MSVC 库冲突
/NODEFAULTLIB:"libcmt.lib"
运行时库选择:
使用了静态编译且没有编译debug版libcurl选择为/MD。
如果编译了debug版libcurl,请分别在Configurations: Debug中选择/MDd、Configurations: Release中选择/MD。
如果使用了动态编译,则为/MTd和/MT。
三、测试代码
#include <iostream>
#include <curl/curl.h>
using namespace std;
int main()
{
CURL* curl = nullptr;
CURLcode res;
curl = curl_easy_init();
if (curl != nullptr) {
curl_easy_setopt(curl, CURLOPT_URL, "https://fanyi.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);
}
system("pause");
return 0;
}
打印网页的内容到控制台,则说明libcurl正确加载并能使用。UTF8中文乱码
参考博客:
https://www.cnblogs.com/linuxAndMcu/p/14723778.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
2019-10-20 python 脚本编译成可执行二进制(exe)
2019-10-20 python 小工具 重命名当前文件夹内所有的文件,升序命名
2016-10-20 Qt 无法解析外部文件2001,2019之类的