Работаю через QT Creator. Создал проект, назвал test.
1) Скачал библиотеку curl
2) Скопировал из распакованного архива библиотеки curl все файлы из папки /home/n199a/curl/include/ в папку /usr/include/curl
n199a@n199a:~$ ls /usr/include/curl
curl.h easy.h Makefile.in multi.h system.h
curlver.h Makefile.am mprintf.h stdcheaders.h typecheck-gcc.h
3) В файл test.pro проекта дописал:
LIBS += -lcurl
ошибка: collect2: error: ld returned 1 exit status
У меня Linux Mint. В ней по умолчанию предустановлена библиотека curl, но почему её не было в папке /usr/include/ ? Сам код программы:
//подключаем необходимые заголовочные файлы
#include <string>
#include <iostream>
#include <curl/curl.h>
//подключаем стандартное пространство имен
using namespace std;
//объявляем буфер, для хранения возможной ошибки, размер определяется в самой библиотеке
static char errorBuffer[CURL_ERROR_SIZE];
//объялвяем буфер принимаемых данных
static string buffer;
//функция обратного вызова
static int writer(char *data, size_t size, size_t nmemb, string *buffer)
{
//переменная - результат, по умолчанию нулевая
int result = 0;
//проверяем буфер
if (buffer != NULL)
{
//добавляем к буферу строки из data, в количестве nmemb
buffer->append(data, size * nmemb);
//вычисляем объем принятых данных
result = size * nmemb;
}
//вовзращаем результат
return result;
}
//главная функция
int main(void)
{
//необходимые CURL объекты
CURL *curl;
CURLcode result;
//инициализируем curl
curl = curl_easy_init();
//проверяем результат инициализации
if (curl)
{
//задаем все необходимые опции
//определяем, куда выводить ошибки
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer);
//задаем опцию - получить страницу по адресу http://google.com
curl_easy_setopt(curl, CURLOPT_URL, "google.com");
//указываем прокси сервер
curl_easy_setopt(curl, CURLOPT_PROXY, "proxy:8080");
//задаем опцию отображение заголовка страницы
curl_easy_setopt(curl, CURLOPT_HEADER, 1);
//указываем функцию обратного вызова для записи получаемых данных
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
//указываем куда записывать принимаемые данные
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
//запускаем выполнение задачи
result = curl_easy_perform(curl);
//проверяем успешность выполнения операции
if (result == CURLE_OK)
//выводим полученные данные на стандартный вывод (консоль)
cout << buffer << "\n";
else
//выводим сообщение об ошибке
cout << "Ошибка! " << errorBuffer << endl;
}
//завершаем сессию
curl_easy_cleanup(curl);
return 0;
}