ошибки cURL: неопределенные ссылки - PullRequest
0 голосов
/ 24 октября 2011

Я нашел эту ветку, когда искал способ загрузить URL на мой компьютер: Загрузить файл с помощью libcurl на C / C ++

Я скачал curl для 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 Iскачал, так что я предполагаю, что мне нужно с чем-то связать, вопрос в том, что это?

Код:

#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 голосов
/ 24 октября 2011

Я не знаю деталей для Windows (я никогда не использовал эту систему, но с 1993 года использую GNU / Linux с радостью), но вам, вероятно, нужно связать библиотеку libcurl (возможно, с использованием таких файлов, как libcurl.lib и / или libcurl.dll или что-то подобное).

Но вы рассматривали возможность использования GNU / Linux в качестве платформы для разработки?Если вы хотите использовать C ++ и Curl, это имеет большой смысл (потому что Linux имеет хороший бесплатный компилятор C ++, GCC , а также потому, что libcurl, вероятно, разработан в основном для Linux и на нем).А возможность заглянуть во весь исходный код вашей системы позволяет вам многому научиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...