ElectronicsBlog

Обучающие статьи по электронике

Установка и интеграция curl

Всем доброго времени суток! Сегодня я расскажу, что такое библиотека CURL, как её установить и интегрировать с интегрированной средой разработки Visual Studio 2019. Рассмотрим возможности данной библиотеки, создадим и запустим небольшой пример на языке программирования С++.

Что такое CURL?

CURL – это библиотека с открытым исходным кодом, позволяющая разрабатывать программное обеспечение с использованием различных Интернет протоколов. Днем создания CURL считается 20 марта 1998 года.

Для сборки радиоэлектронного устройства можно преобрески DIY KIT набор по ссылке.

логотип curl

Данная библиотека в первую очередь предназначена для загрузки и скачивания различных типов данных, по указанному URL-адресу. CURL означает С – client, URL – url-адресс.

Целью проекта CURL является создание и развитие двух продуктов:

— Curl, как инструмент командной стоки;

— libcurl, как библиотека API для языка программирования С.

Эти продукты используются для множества приложений, работающих с Интернетом, а также для тестирования различных серверов, настройки протоколов и прочее. Библиотека libcurl используется в множестве встроенных устройствах, использующих Интернет для передачи данных: автомобильные системы, телевизоры, проигрыватели, игровые консоли, принтеры, роутеры и так далее. Хотя libcurl написан на языке С, в настоящее время она используется во множестве других языков.

CURL поддерживает множество протоколов, используемых в сети Интернет, которые позволяют передавать данные в одном или обоих направлениях: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS, WSS.

Домашняя страница библиотеки CURL https://curl.se/

Существует два способа установки данной библиотеки в операционную систему Windows:

— MSYS2;

— vcpkg.

В данной статье я буду устанавливать с помощью vcpkg.

Что такое vcpkg и как его установить?

При работе с С++ стандартная библиотека не может удовлетворить потребностей разработчика. Приходится использовать другие библиотеки, специально разработанные под конкретную задачу. Однако их загрузка, установка и управление ими вручную – задача не тривиальная. Для упрощения данных задач были созданы специальные менеджеры проектов, позволяющие упростить работу со сторонними библиотеками.

Одним из наиболее популярных менеджеров пакетов является vcpkg.

vcpkg

vcpkg – это бесплатный менеджер пакетов языков программирования С/С++ для загрузки и управления библиотеками. Данный менеджер поддерживается командой Microsoft C++ и участниками открытого исходного кода.

Чтобы его установить необходимо воспользоваться утилитой командной строки Git, которая представляет собой систему контроля версий

git

Если она не установлена её необходимо скачать и установить по ссылке https://gitforwindows.org/

Проверить установлена ли git можно запустив терминал Windows (Win + R) и введя команду git version, позволяющая узнать версию git

Либо же просто команду git, которая выводит в консоль справку по использованию параметров команды git

Для установки vcpkg необходимо скачать архив на странице по ссылке https://github.com/microsoft/vcpkg

Нажать на кнопку Code

Нажать Download ZIP.

После скачивания у вас будет zip-архив vcpkg-master.zip, его необходимо распаковать и скопировать желательно на тот диск, где у вас есть запас свободного места, так как в дальнейшем все пакеты библиотек, установленные с помощью vcpkg, будут помещаться в папку vcpkg-master.

В папке vcpkg-master находим пакетный файл bootstrap-vcpkg.bat и запускаем его

Результатом работы данного пакетного файла будет создание требуемого нам исполняемого файла vcpkg.exe, через который и будет происходить вся работа с менеджером пакетов vcpkg

Далее запускаем терминал Windows и переходит в каталог где у нас находится файл vcpkg.exe.

    • 1. Нажимаем (Win + R) и в строку поиска вводим cmd

    • 2. Переходим в каталог, в котором расположено приложение vcpkg.exe. Так как у меня оно расположено по пути E:\Projects\vcpkg-master, то вначале необходимо сменить диск. Для этого вводим в терминале букву диска с двоеточием и нажимаем клавишу Enter

после чего переходим в требуемый каталог с помощью команды cd ./Projects/vcpkg-master

    • 3. Для проверки правильности установки менеджера пакетов можно ввести команду vcpkg

Если у Вас терминал вывел такую подсказку значит vcpkg установлен правильно.

Установка CURL.

Для установки CURL необходимо ввести команду vcpkg install curl, находясь в папке где находится приложение vcpkg.exe

После чего запустится процесс скачивания необходимых файлов библиотеки CURL. Кроме этих файлов будут скачаны и установлены некоторые другие пакеты, необходимые для работы CURL.

Рассмотрим, что же vcpkg скачал:

    • 1. В папке downloads находятся те файлы, которые были скачаны (у Вас может быть другой набор)

    • 2. В папке installed находятся непосредственно файлы библиотеки, которые были собраны самим vcpkg для моей операционной системы

    • 3. Необходимо произвести интеграцию vcpkg и Visual Studio 2019, чтобы не было необходимости постоянно изменять настройки проекта, прописывая пути к заголовочным файлам и статическим библиотекам. Для этого в терминале необходимо выполнить команду vcpkg integrate install

    • 4. Необходимо создать новую переменную среды и добавить в неё в качестве параметра путь к папке E:\Projects\vcpkg-master\installed\x64-windows\bin содержащей динамические библиотеки. Для этого идём в Свойства системы и выбираем Переменные среды…

Выбираем системную переменную с именем Path и изменяем её

Изменяется переменная достаточно просто: нажимаем кнопку Создать и в появившуюся стоку вписываем путь к папке с динамическими библиотеками. В моём случае это путь E:\Projects\vcpkg-master\installed\x64-windows\bin

Для проверки правильности подключения vcpkg и библиотеки CURL к среде разработки запустим Visual Studio 2019. Можно создать проект консольного приложения и скомпилировать данный листинг

#include <iostream>
#include <string>
#include <curl/curl.h>


static size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp)
{
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}

int main(void)
{
    CURL* curl;
    CURLcode res;
    std::string readBuffer;

    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);

        std::cout << readBuffer << std::endl;
    }
    return 0;
}

 

Теория это хорошо, но необходимо отрабатывать это всё практически ПОПРОБОВАТЬ МОЖНО ЗДЕСЬ