使用Qt Creator在Windows中运行libssh2

libssh2 in Windows using Qt Creator

本文关键字:运行 libssh2 Windows Qt Creator 使用      更新时间:2023-10-16

我正在尝试构建一个在Windows中使用cUrl的Qt项目。我已经成功地将我的项目与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:LibsCcurl-7.45.0-win32-mingwinclude
QMAKE_CXXFLAGS += -DCURL_STATICLIB
LIBS += C:LibsCcurl-7.45.0-win32-mingwliblibcurl.a

注意,添加-DCURL_STATICLIB解决了我之前得到未定义引用的错误:

C:...main.cpp:7: error: undefined reference to `_imp__curl_global_init'

然而,现在我得到了以下未定义的引用:

C:LibsCcurl-7.45.0-win32-mingwliblibcurl.a(easy.o):-1: error: undefined reference to `libssh2_init'
C:LibsCcurl-7.45.0-win32-mingwliblibcurl.a(easy.o):-1: error: undefined reference to `libssh2_exit'
:-1: error: C:LibsCcurl-7.45.0-win32-mingwliblibcurl.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:LibsCcurl-7.45.0-win32-mingwliblibcurl.a(easy.o):-1: error: undefined reference to `_imp__WSAStartup@8'
C:LibsCcurl-7.45.0-win32-mingwliblibcurl.a(easy.o):-1: error: undefined reference to `_imp__WSACleanup@0'
C:LibsCcurl-7.45.0-win32-mingwliblibcurl.a(easy.o):-1: error: undefined reference to `_imp__WSACleanup@0'

这是一个巨大的痛苦。

我最终下载了libcurl的源代码,在没有ssh2的情况下进行了重建,然后通过包含-lwldap32,我终于可以毫无错误地构建它。

然而,在Linux中成功的代码在Windows中失败。