0

Мне нужно написать парсер который будет считывать данные из 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, &quot;ссылка&quot;);
    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

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

  • "пол дня пытался установить библиотеку cURL" - ничего устанавливать не требуется, требуется указать местоположение заголовочных файлов, библиотек, и какие надо линковать – user7860670 May 03 '23 at 05:20

2 Answers2

1

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

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

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

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

megorit
  • 1,945
  • Мне просто нужно использовать какой-то именно фреймворк для GUI ,а QT Creator уже скорее как среда идет – Алексей Моголивец May 03 '23 at 01:59
  • @АлексейМоголивец, Qt и есть фреймворк, а Qt Creator - IDE – megorit May 03 '23 at 02:00
  • @АлексейМоголивец, если вы не знакомы c CMake, то лучше используйте Qt Creator, там будет гораздо проще подключить необходимые модули. – megorit May 03 '23 at 02:02
  • @АлексейМоголивец, лично для меня Qt Creator - основная IDE, даже если я не использую Qt. Это лучшая бесплатаная IDE для плюсов. Есть ещё CLion, но он не стоит тех денег, что за него просят. – megorit May 03 '23 at 02:05
  • ,спасибо,буду пробовать – Алексей Моголивец May 03 '23 at 02:10
1

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

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

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

Если QMake, то так

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

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

  • Лучше пользоваться всегда find_package или pkg-config, конечно. – megorit May 03 '23 at 02:16