我在寻找将URL下载到我的电脑的方法时找到了这个帖子: Download file using libcurl in C/C++
我下载了curl for windows并将所有3个文件夹合并到MinGW目录中的现有对应文件:include,lib和bin。
现在,每当我编译代码时,我都会遇到以下错误,我知道这些错误是由于没有链接正确的库,但在我提供的链接中,他们没有足够的信息来链接:
obj\Debug\main.o
In function main':
D:\CPP Scrap\curl1\main.cpp:11: undefined reference to __imp__curl_easy_init'
D:\CPP Scrap\curl1\main.cpp:13: undefined reference to __imp__curl_easy_setopt'
D:\CPP Scrap\curl1\main.cpp:14: undefined reference to __imp__curl_easy_perform'
D:\CPP Scrap\curl1\main.cpp:17: undefined reference to __imp__curl_easy_cleanup'
=== Build finished: 4 errors, 0 warnings ===
它显示标题curl/types.h
被包含但我在我下载的curl [最新]版本中找不到它,所以我猜我必须链接一些东西,问题是,它是什么?
代码:
#define CURL_STATICLIB
#include <stdio.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
#include <string>
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
size_t written;
written = fwrite(ptr, size, nmemb, stream);
return written;
}
int main(void) {
CURL *curl;
FILE *fp;
CURLcode res;
char *url = "http://localhost/aaa.txt";
char outfilename[FILENAME_MAX] = "C:\\bbb.txt";
curl = curl_easy_init();
if (curl) {
fp = fopen(outfilename,"wb");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
fclose(fp);
}
return 0;
}
答案 0 :(得分:0)
我不知道Windows的详细信息(我从未使用过该系统,但我从1993年开始使用GNU / Linux时很开心),但您可能需要链接libcurl
库(可能使用类似的文件) libcurl.lib
和/或libcurl.dll
或类似内容。
但您是否考虑过使用GNU / Linux作为开发平台?如果你想使用C ++&amp; Curl,它很有意义(因为Linux有一个很好的免费C ++编译器,GCC,因为libcurl可能主要是为Linux开发的)。能够浏览系统的所有源代码,使您能够学到很多东西。