libssh2 в Windows с помощью Qt Creator

Я пытаюсь создать проект 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'

person Victor Stone    schedule 01.11.2015    source источник


Ответы (1)


Это довольно чудовищная боль.

В итоге я загрузил исходный код libcurl, пересобрал без ssh2, а затем, включив также -lwldap32, наконец-то получил сборку без ошибок.

Однако код, который работает в Linux, не работает в Windows.

person Victor Stone    schedule 01.11.2015