Get запрос из АРІ С++
Мне нужно написать парсер который будет считывать данные из 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
Помогите, пожалуйста , очень нужно решить проблему
Ответы (2 шт):
Не нужен вам cURL, если вы используете Qt. Подключайте модуль Network и используйте QNetworkAccessManager, у него метод (функция), который так и называется: get. Он вернёт QNetworkReply*, цепляйтесь за него слотами через QObject::connect.
Также непонятно зачем вам Visual Studio, если вы, опять же, используете Qt. Поставьте Qt Creator и жизнь станет проще.
Для GUI советую посмотреть в сторону QML (в Qt для него есть отдельный модуль). Но там нужно знание JS на базовом уровне.
Что касается ошибки. Это ошибка линковки. Видимо вы не подключили cURL должным образом. Также, если вы скачали билд, то под виндой (за что я её терпеть не могу) возможны проблемы с ABI. Они возникают в основном тогда, когда ваше приложение и билд библиотеки скомпилированны разными компиляторами (Clang, MinGW, MSVC).
вы не подключили библиотеку, на что линковщик и ругается.
Если собираете в CMake, то примерно так:
find_library(CURL_LIB curl)
target_link_libraries(untitled "${CURL_LIB}")
Если QMake, то так
LIBS +=C:/path/to/libcurl.dll
PS: А вообще см. ответ выше. Ни к чему тянуть лишние либы если все уже есть в Qt