2015-11-01 163 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中失敗。