Get запрос из АРІ С++

Рейтинг: 0Ответов: 2Опубликовано: 03.05.2023

Мне нужно написать парсер который будет считывать данные из API и выводить на экран. Графический интерфейс можно делать в любом фреймворке, я выбрал QT. Следующей проблемой стало то, как осуществить get запрос. Я пол дня пытался установить библиотеку cURL для Visual Studio 2022 по гайдам из стаковерфлоу и ютюба, но у меня абсолютно ничего не получается. Когда я все распаковал, то при следующем коде :

#include <QtWidgets/QApplication>
#include <iostream>
#include <string>
#define CURL_STATICLIB
#include "curl/curl.h"
#include "main.h"
using namespace std;
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    test w;
    w.show();
    return a.exec();
   
    CURL* curl;
    CURLcode res;
 
    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "ссылка");
        res = curl_easy_perform(curl);       
    }
} ```

возникают следующие ошибки :

Ошибка LNK2019 ссылка на неразрешенный внешний символ curl_global_init в функции main. 
Ошибка LNK2019 ссылка на неразрешенный внешний символ curl_global_cleanup в функции main.
Ошибка LNK2019 ссылка на неразрешенный внешний символ curl_easy_init в функции main.
Ошибка LNK2019 ссылка на неразрешенный внешний символ curl_easy_setopt в функции main. 
Ошибка LNK2019 ссылка на неразрешенный внешний символ curl_easy_perform в функции main.
Ошибка LNK1120 неразрешенных внешних элементов: 5 

Помогите, пожалуйста , очень нужно решить проблему




Ответы

▲ 1Принят

Не нужен вам cURL, если вы используете Qt. Подключайте модуль Network и используйте QNetworkAccessManager, у него метод (функция), который так и называется: get. Он вернёт QNetworkReply*, цепляйтесь за него слотами через QObject::connect.

Также непонятно зачем вам Visual Studio, если вы, опять же, используете Qt. Поставьте Qt Creator и жизнь станет проще.

Для GUI советую посмотреть в сторону QMLQt для него есть отдельный модуль). Но там нужно знание JS на базовом уровне.

Что касается ошибки. Это ошибка линковки. Видимо вы не подключили cURL должным образом. Также, если вы скачали билд, то под виндой (за что я её терпеть не могу) возможны проблемы с ABI. Они возникают в основном тогда, когда ваше приложение и билд библиотеки скомпилированны разными компиляторами (Clang, MinGW, MSVC).

▲ 1

вы не подключили библиотеку, на что линковщик и ругается.

Если собираете в CMake, то примерно так:

find_library(CURL_LIB curl)
target_link_libraries(untitled "${CURL_LIB}")

Если QMake, то так

LIBS +=C:/path/to/libcurl.dll

PS: А вообще см. ответ выше. Ни к чему тянуть лишние либы если все уже есть в Qt