2017-05-27 16 views
-1

こんにちは、Cのウィンドウ用のアプリケーションをビルドしたいと思います。私はlinuxでプログラミングし、gccmingw-w64でコードをコンパイルします。Linuxの `__imp_WSAStartup 'への未定義の参照

出力と入力が簡単なプログラムを試してみましたが、それはウィンドウ上で正常に動作します。

しかし、ソケットを使用してサーバーに接続したいと考えています。

は、だから私はhttp://beej.us/guide/bgnet/output/html/multipage/intro.html#audience

をグーグルで検索し、このチュートリアルを見つけたそれは、だから私がやったウィンドウで、我々は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

これは、「インポートライブラリ」、あなたがリンクする必要がスタブであります各DLLを使用するWindowsプログラムに対してMinGWには、すべての標準Windowsプラットフォームインポートライブラリが含まれています。だから、-lws2_32を使ってリンクするだけです。

+0

ありがとう、それは動作しますが、別のライブラリが必要な場合は、2つを含める方法はありますか? –

+0

他の '-l'フラグに他のライブラリの名前を追加するだけです。これは、linuxのコンパイルと変わりありません。 –

関連する問題