zveropasen
@zveropasen
Начинающий программист

Как подключить libcurl к Qt?

День добрый!

Потребовалось написать HTTP клиент, но опыта работы с сетям нету (лишь несколько лекций в университете).
На просторах интернета нашел подходящий для себя вариант, использующий библиотеку libcurl.
Установив библиотеку, удачно скомпилировал под Linux, запустил - все работает как часы. Но для удобства работы, хотелось бы остальное написание кода продолжить в Qt.
Зашел на официальный сайт https://curl.haxx.se/download.html. Далее загрузил нужную мне версию

1d1c11aa5dbb4955b59f35d67f104333.png.

В своем проекте в .pro прописал пути:
  • INCLUDEPATH += C:\Qt\curl-7.49.0-win32-mingw\include
  • LIBS += -LC:\Qt\curl-7.49.0-win32-mingw\lib\libcurl.a
  • DEFINES += CURL_STATICLIB

Так же скопировал dll из папки bin в debug/release проекта и windows/system32.
В основном файле прописал #include .
Но при компиляции выдает ошибки вида "undefined reference to `curl_easy_init'" и т.д. по каждой функции.

Поискал ответы, но везде ошибка решается путем добавления путей в .pro howtofix.pro/tutorial-libcurl-on-qt-creator-with-m... Либо проблема заключается в несоответствии версий компиляторов.
На Qt ( Qt Creator 3.5.1, основан на Qt 5.5.1 (MSVC 2013, 32 бита) ) у меня MinGW 32 bit. Пробовал скачивать разные версии libcurl: Win32 - Generic, Win64 - Generic, Win64 - MinGW64.

В чем ошибка?
  • Вопрос задан
  • 3001 просмотр
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Подключать надо libcurldll.a в таком виде.
-LC:\Qt\curl-7.49.0-win32-mingw\lib -lcurldll

Вот кусок, взятый из реального проекта.
win32|win64: LIBS += -lws2_32 -lshlwapi -lodbc32 -lpsapi -lcomdlg32 \
                     -L$$PWD/../../Common/cURL/lib/ -lcurldll -lole32 \
                     -loleaut32


Кроме того, тебе не хватает OpenSSL — найди libeay32.dll и ssleay32.dll, лучше скомпилированные старой версией MSVC и не требующие новых runtime’ов, которые есть не везде. Ах да, есть версии libcurl, которые скомпилированы без SSL — им этого, разумеется, не нужно.

Подожди, сейчас посмотрю, что будет, если вкомпилировать в программу библиотеку cURL статически, без DLL.

UPD. Попробовал. Почти работает, но надо разобраться, как подключить winsock и OpenSSL — раньше-то ими занимался тот, кто компилирует DLL, а сейчас это будет моя забота.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@vilgeforce
Раздолбай и программист
А LIB-файл вы на винде прописали в качестве библиотеки?
Ответ написан
Комментировать
MAKAPOH
@MAKAPOH
многостаночник
Если у вас нет требования работать именно с MSVC компилятором то можно взять Qt вместе с curl из MSYS2. Часто использую эту сборку, там всё между собой совместимо (собирается одним компилятором). Именно curl не пробовал но с десяток других библиотек работают в проекте без проблем.
Ответ написан
Zifix
@Zifix Куратор тега Qt
Barbatum
А почему бы не работать с сетью с помощью Qt?

Чукча купил себе Камаз, приехал домой, собрал родню у себя в чуме, сидит, рассказывает:
- Хорошая машина Камаз. В кабине тепло, фары тайгу освещают… одно плохо — собаки быстро устают.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Искра Екатеринбург
от 80 000 до 100 000 ₽
Art gorka Санкт-Петербург
от 60 000 ₽
от 40 000 до 60 000 ₽
19 апр. 2024, в 23:00
5000 руб./за проект
19 апр. 2024, в 20:43
20000 руб./за проект