2015-11-01 165 views
0

我正在尝试构建一个在Windows中使用cUrl的Qt项目。我已经成功地将我的项目与libcUrl链接起来。在Windows中使用Qt Creator的libssh2

我正在使用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' 

不过现在我得到以下未定义refences:

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。我怎样才能包括它?这之后还会出现其他的依赖关系吗?

编辑:在.pro文件中添加LIBS += -lws2_32。这删除了以下3个错误。

C:\Libs\C\curl-7.45.0-win32-mingw\lib\libcurl.a(easy.o):-1: error: undefined reference to `[email protected]' 
C:\Libs\C\curl-7.45.0-win32-mingw\lib\libcurl.a(easy.o):-1: error: undefined reference to `[email protected]' 
C:\Libs\C\curl-7.45.0-win32-mingw\lib\libcurl.a(easy.o):-1: error: undefined reference to `[email protected]' 

回答

0

这是相当可怕的痛苦。

我最终下载了libcurl的源码,没有使用ssh2重建,然后通过包含-lwldap32,我终于完成了它的构建而没有错误。

但是,在Linux中成功的代码在Windows中失败。