cURL错误:未定义的引用

时间:2011-10-24 17:10:31

标签: c++ curl

我在寻找将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; 
}

1 个答案:

答案 0 :(得分:0)

我不知道Windows的详细信息(我从未使用过该系统,但我从1993年开始使用GNU / Linux时很开心),但您可能需要链接libcurl库(可能使用类似的文件) libcurl.lib和/或libcurl.dll或类似内容。

但您是否考虑过使用GNU / Linux作为开发平台?如果你想使用C ++&amp; Curl,它很有意义(因为Linux有一个很好的免费C ++编译器,GCC,因为libcurl可能主要是为Linux开发的)。能够浏览系统的所有源代码,使您能够学到很多东西。