Использование libcurl в Visual Studio.
2 Вступление
Выдержка
с CURL вебстраницы(http://curl.haxx.se/)
“Curl – это
инструмент
для
передачи
данных
в URL-синтаксисе, поддерживающий FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE and LDAP. Curl поддерживает HTTPS сертификаты, HTTP POST, HTTP PUT, FTP загрузки,
kerberos, HTTP загрузки
через
базовую
форму, прокси, cookies(куки), логин+пароль
аутентификацию, возобновлением
передачи
данных, http-прокси-туннели
и
еще
вагон
различных
трюков.”
В
этом документе мы объясняем как использовать CURL, но приводим самые
простые способы с минимальным использование файлов из библиотеки CURL.
Один раз собрав и запустив такое простое приложение вы сможете изучить и другие
особенности CURL и увеличить функциональные возможности вашего проекта.
Этот документ объясняет как сконфигурировать
различные части, читая группы новостей, много людей похожие проблемы с
использованием dll-файлов, конфигурированием Visual
Studio и библиотеки CURL. Поскольку сейчас я
имею решения этих проблем, то почему бы не выложить их в виде документа, чтобы
другие люди не тратили много времни на поиски этих решений.
Технология Kerberos. Название технологии аутентификации и
шифрования с открытым ключом, созданной в середине 1980-х годов в
Массачусетском технологическом институте (MIT) на базе стандарта DES. Описана в RFC 1510. Kerberos используется в Microsoft Windows начиная с версии 2000. В русском
переводе Kerberos
- Цербер. Так в древнегреческой мифологии назывался трёхголовый пёс,
охранявший вход в подземное царство. |
В этом документе использовалась Visual
Studio версии 6.0, но все сказанное можно отнести к любой другой
версии.
3 Установка библиотеки CURL.
Вам
необходимо скачать самые свежие исходники CURL и распаковать архив для
дальнейшего использования (для сборки dll и lib
файлов).
3.1 Загрузите надлежащие
исходники.
Загрузите
последнюю версию CURL со страницы загрузки CURL:
http://curl.haxx.se/download.hmtl
При
написании этого документа я использовал версию curl-7.9.6.zip
Распакуйте
ахрив во временный каталог. При этом вы получите следующую структуру каталогов.
Наши приложения будут
использовать dll файлы в среде Windows, поэтому интерес для нас представляет только каталог
“lib”. Другие файлы и каталоги вы можете рассмотреть
нескольоко позже, когда уже создатите свою первую программу. Вам также
понадобится каталог “include” вместе
со всеми заголовочными файлами внутри.
3 Компиляция
библиотеки CURL.
Перейдите в каталог “lib” и двойным шелчком откройте файл “curlib.dsw”, являющийся
файлом проекта Visual Studio библиотеки
CURL. Этим вы запустите Visual Studio
с нужной конфигурацией и установками.
Понятно, что для этого у вас уже должен быть установлен пакет Visual Studio.
Когда проект будет открыт,
нажмите кнопку “Build”, чтобы скомпилировать файлы
и скомпоновать проект:
Теперь,
если вы загляните в каталог “curl-7.9.6\lib\Dubug”, то
увидите там два созданных файла, которые представляют для нас интерес:
·
libcurl.lib
·
libcurl.dll
Для
создания нашего приложения минимум, что нам потребуется, это эти два файла плюс заголовочные файлы из
каталога “include”. Теперь вы можете закрыть
проект Visual Studio,
т.к. мы переходим к создания нашего приложения.
4
Использование библиотеки
libcurl (libcurl.dll) в вашем проекте Visual Studio
Вы можете создать создать структуру каталогов и
назвать проект как пожелаете. Но если
вы предпочтете соблюдать структуру и имена как в нашем примере ниже, то вам
будет легче повторять все примеры и сравнивать наши данные со своими, если
возникнут проблемы.
4.1
Создание структуры файлов для проекта
Создайте
следующую структуру каталогов на диске ‘С:\’:
Где вы создаете каталог libcurl в C:\project\ и создаете еще 3 каталога внутри C:\project\ libcurl. Каталог include должен быть точной копией каталога curl-7.9.6\ include, поэтому просто скопируйте его из распакованного
ранее архива.
Внутри каталога include найдете
несколько make-файлов и один подкаталог curl:
Если пожелаете - можете
удалить все make-файлы и оставить только заголовочные файлы:
В каталог lib
нужно скопировать те 2 файла, которые вы
скомпоновали в шаге 3, имеются ввиду следующие файлы:
·
libcurl.lib
·
libcurl.dll
Итак, теперь у вас все
заголовочные файлы в C:\project\ libcurl\include\curl
и 2 файла в C:\project\ libcurl\lib. Это все что вам необходимо от CURL и сейчас вы можете начать создавать приложение
использующее эти файлы.
4.2
Создание простого Hello World приложения
Можете создавать любой тип
приложения какой пожелаете, но сейчас мы создадим простое приложение, чтобы
показать, как работать с библиотекой CURL.
В Visual Studio
проследуйте в меню File->New->Projects и выберете Win32ConsoleApplication:
Назовите проект MyApplication у расположите
его в каталоге C:\project\ libcurl\VisualStudio:
Нажмите Ok и,
когда перейдете к следующему диалогу, установите переключатель “A Hello World Appllication”
(в Visual Studio 7 такого
переключателя нет, остальные диалоговые окна, проиллюстрированные в этом
руководстве, отличаются только внешним видом и расположением компонентов):
Нажмите Finish и Visual Studio
создаст все необходимые файлы и
подкаталог MyApplication в каталоге C:\project\ libcurl\VisualStudio.
Когда все сделано, можете
кликнуть мышью на левой панели по «FileView»:
Найдите главный модуль вашего
приложения с именем MyApplication.cpp:
Двойной щелчок мыши по MyApplication.cpp откроет
исходный код приложения:
(в Visual Studio
старше 6-ой версии строку printf придется
добавить самостоятельно, хотя все эти объяснения мне кажутся излишними,
поскольку программист, решивший использовать библиотеку CURL, вероятно, уже
не новичок в программировании. прим. переводчика)
Нажмите кнопку Build, чтобы
скомпилировать и скомпоновать файлы приложения:
Потом нажмите Run
чтобы запустить приложение:
Зайдите в каталог Debug,
который появился в результате наших действи:
Там можно найти EXE файл
вашего приложения (MyApplication.exe):
4.3
Подключение библиотеки CURL к проекту
Сейчас,
когда наше окружение настроено, мы можем подключить библиотеку CURL
к нашему приложению. Проще всего воспользоваться готовым кодом «Hello
World», взяв его со страницы сайта:
http://curl.haxx.se/libcurl/c/example.html
Мы
выберем один простой пример (файл simple.c):
http://curl.haxx.se/lxr/source/docs/example/simple.c
Скопируем
следующие строки и заменим ими исходный код нашего Hello World.
Заметьте, чтобы мы оставляем строку #include “stdafx.h”,
и для теста используем url-адрес www.cnn.com , чтобы выполнить url-запрос:
#include “stdafx.h”
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "curl.haxx.se");
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}
Перед тем как будет можно
приступать к компиляции вам необходимо выполнить несколько шагов, чтобы
подключить заголовочные файлы к проекту, а также и dll-файлы.
Эти шаги разъясняются ниже.
4.3.1 Добавление *.h файлов в include-пути
Проследуйте
в
меню
Tools->Options->Directories->Show
directories for Include Files:
Кликните в конце списка,
чтобы открыть диалоговое окно и укажите директорию C:\project\libcurl\include. Заметьте,
что не нужно указыать C:\project\libcurl\include\curl, где расположены все заголовочные файлы, потому, что
в исходном коде указываем #include <curl/curl.h>, следовательно нужно указать родительский каталог:
4.3.2 Добавление libcurl.lib в пути библиотек
В выпадающем списке «Show Directories for» измените «Include Files» на «Library Files» и добавьте
путь к файлу библиотеки (имеется ввиду libcurl.lib):
4.3.3 Добавление libcurl.lib в список
библиотек проекта
Теперь вы должны указать в Visual Studio,
что нужно использовать libcurl.lib во
время компоновки. Сделайте это, проследовав Project->Settings->Link->Category(General) и добавив libcurl.lib
в конец списка других библиотечных файлов
в поле ввода «Object/library modules», отделив
от последнего имени знаком пробела:
4.3.4 Компилирование
программы
Теперь вы можете
скопмилировать и скомпоновать ваш проект. Нажмите кнопку Build, чтобы
скомпоновать приложение вместе с libcurl.lib:
4.3.5 Запуск
программы
Если вы попробуете запустить
приложение, нажав на кнопку Run:
То
увидите сообщение об ошибке:
В
котором говорится, что libcurl.dll
не была обнаружена в каталогах заданных
по умолчанию. Чтобы устранить эту проблему нужно скопировать файл libcurl.dll каталог,
где приложение сможет найти его. Вы можете поместить его либо в C:\windows\system32 или же в C:\windows, и т.д. Но если вы не желаете смешивать этот dll-файл с другими
такими же файлами системы, то можете поместить его в каталог, где расположен EXE файл
вашего приложения:
C:\Project\libcurl\VisualStudio\MyApplication\Debug
(в
других версиях Visual Studio поместите в каталог вашего проекта. прим.
переводчика)
Скопировав
dll-файл в одну из этих директорий можете снова
попробовать запустить приложение и вуаля, оно соединяется с www.cnn.com и делает GET-запрос, т.е. получает страницу целиком и выводит
содержимое в консоль:
Примите поздравления: вы
создали первое клиентское приложение CURL.
Теперь можете расширять его функциональность и исследовать CRUL на
других примерах.