Я пытаюсь создать проект Qt, который использует cUrl в Windows. Мне удалось успешно связать свой проект с libcUrl.
Я использую Qt Creator 3.5.1, Qt 5.5.1 с компилятором MinGW 4.9.2 32 бит.
Вот мой main.cpp (да, я знаю, что мне не хватает глобальной очистки, сейчас я только пытаюсь его скомпилировать):
#include "mainwindow.h"
#include <QApplication>
#include <curl/curl.h>
int main(int argc, char *argv[]) {
curl_global_init(CURL_GLOBAL_WIN32);
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
Чтобы заставить libcUrl работать, я добавил в свой файл .pro следующее:
INCLUDEPATH += C:\Libs\C\curl-7.45.0-win32-mingw\include
QMAKE_CXXFLAGS += -DCURL_STATICLIB
LIBS += C:\Libs\C\curl-7.45.0-win32-mingw\lib\libcurl.a
Обратите внимание: добавление разрешенных ошибок -DCURL_STATICLIB, которые у меня были раньше, где я получил неопределенную ссылку:
C:\...\main.cpp:7: error: undefined reference to `_imp__curl_global_init'
Однако теперь я получаю следующие неопределенные ссылки:
C:\Libs\C\curl-7.45.0-win32-mingw\lib\libcurl.a(easy.o):-1: error: undefined reference to `libssh2_init'
C:\Libs\C\curl-7.45.0-win32-mingw\lib\libcurl.a(easy.o):-1: error: undefined reference to `libssh2_exit'
:-1: error: C:\Libs\C\curl-7.45.0-win32-mingw\lib\libcurl.a(easy.o): bad reloc address 0x0 in section `.data'
collect2.exe:-1: error: error: ld returned 1 exit status
Я думаю, мне не хватает ssh2. Как я могу включить это? Какие еще зависимости появятся после этой?
РЕДАКТИРОВАТЬ: добавлено LIBS += -lws2_32
в файл .pro. Это устранило следующие 3 ошибки.
C:\Libs\C\curl-7.45.0-win32-mingw\lib\libcurl.a(easy.o):-1: error: undefined reference to `_imp__WSAStartup@8'
C:\Libs\C\curl-7.45.0-win32-mingw\lib\libcurl.a(easy.o):-1: error: undefined reference to `_imp__WSACleanup@0'
C:\Libs\C\curl-7.45.0-win32-mingw\lib\libcurl.a(easy.o):-1: error: undefined reference to `_imp__WSACleanup@0'