2017-05-27 110 views
-1

您好我想建立一個應用程序的窗口在C,我編程在Linux和編譯代碼gccmingw-w64未定義的參考`__imp_WSAStartup'在Linux中

我試過一個簡單的程序,輸出和輸入它在Windows上工作正常。

但是,我想使用套接字連接到服務器。

所以我在谷歌搜索,發現這個教程http://beej.us/guide/bgnet/output/html/multipage/intro.html#audience

它說,在windows,我們需要包括winsock和運行一些命令 所以我也:

#include <winsock.h> 
int main(void) 
{ 
    WSADATA wsaData; 
    printf("Hello! This is a test prgoram.\n"); 
    if (WSAStartup(MAKEWORD(1,1), &wsaData) != 0) { 
     fprintf(stderr, "WSAStartup failed.\n"); 
    } 
} 

但是,當我嘗試編譯我得到它:

undefined reference to `__imp_WSAStartup' collect2: error: ld returned 1 exit status

在命令行中的所有,我跑是:

x86_64-w64-mingw32-gcc try.c -o a.exe 

那我該怎麼辦? 如果我在linux下編譯,我不需要winsock庫? 如何解決這個問題?

感謝

回答

2

如果你看一下WSAStartup Manual和滾動一點下來,你會發現什麼庫它在定義:Ws2_32.lib

這是一個「導入庫」,你需要鏈接存根反對Windows程序使用相應的DLL。 MinGW包含所有標準的Windows平臺導入庫。所以你只需要鏈接它,使用-lws2_32

+0

嘿,謝謝,它的作品,但如果我需要另一個圖書館,如何包括兩個? –

+0

只需添加另一個'-l'標誌與其他庫的名稱。這與編譯linux沒有區別。 –