c/c++编译使用curl发送网络请求
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2021-05-11 15:10:03
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
编译Curl
下载地址
https://curl.haxx.se/download.html

下载完成后解压,然后打开如下路径来启动对应版本的vs,我用的是vs2015所以打开啦vc14

使用vs打开之后就可以编译啦,选择dll Release然后生成解决方案
编译带ssl的库
打开project目录下面read.md说明文件

下载对应的两个库的源码到对应的路径
git clone https://github.com/openssl/openssl.git git clone https://github.com/libssh2/libssh2.git
然后在project目录里执行
build-openssl vc14 x64 release ../openssl -VSpath "D:\Program Files (x86)\Microsoft Visual Studio 14.0" -perlpath "D:\Perl"
注意上面的路径,如果安装时是默认的话就可以忽略,开始黑屏滚动,好久好久(视电脑配置)
Curl用法
dll引用
进入目录curl-7.60.0\build\Win32\VC6\DLL Release将libcurl.dll和libcurl.lib分别拷贝到curl项目目录下,也可以直接在项目中使用相对路径来引用但是dll文件要复制过来
// pachong.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <iostream>
#include <Windows.h>
#include <tchar.h>
#include "../../curl-7.60.0/include/curl/curl.h"
#pragma comment(lib, "../../curl-7.60.0/build/Win32/VC14/DLL Release/libcurl.lib")
using namespace std;
size_t write_data(char *buffer, size_t size, size_t nitems, void *outstream)
{
int written = fwrite(buffer, size, nitems, (FILE*)outstream);
return written;
}
void anaylize_data()
{
}
int _tmain(int argc, _TCHAR* argv[])
{
// 将源码写到文件里
CURL *pCurl;
FILE* pFile = fopen("baidu.txt", "wb");
pCurl = curl_easy_init();
curl_easy_setopt(pCurl, CURLOPT_WRITEDATA, (void*)pFile);
curl_easy_setopt(pCurl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(pCurl, CURLOPT_URL, "http://www.baidu.com");
curl_easy_perform(pCurl);
fclose(pFile);
curl_easy_cleanup(pCurl);
//显示在终端上
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
curl_global_init(CURL_GLOBAL_ALL);
}
system("pause");
//网页已经被down下来了。
//开始分析里边的数据
anaylize_data();
return 0;
}静态引用
如果是静态引用则需要添加预处理宏定义,否则会报error LNK2019: 无法解析的外部符号 __imp__curl_easy_init,该符号在函数 _main 中被引用 这个错误。
BUILDING_LIBCURL CURL_STATICLIB
然后
#include <curl/curl.h> #pragma comment(lib, "libcurl.lib")