2017-04-07 4 views
0

私はCプレーンプロジェクトをビルドするためにQT Creatorを使用しています。私のプロジェクトはソケットの作成に関わっており、多くの参照エラーが発生しています。Cでwinsock2.hを正しくリンクする方法は?

私のコードは単純です:

#include <winsock2.h> 
#include <stdio.h> 

// Need to link with Ws2_32.lib 
#pragma comment (lib, "Ws2_32.lib") 

int main(int argc , char *argv[]) 
{ 
    WSADATA wsa; 
    SOCKET s; 

    printf("\nInitialising Winsock..."); 
    if (WSAStartup(MAKEWORD(2,2),&wsa) != 0) 
    { 
     printf("Failed. Error Code : %d",WSAGetLastError()); 
     return 1; 
    } 

    printf("Initialised.\n"); 

    if((s = socket(AF_INET , SOCK_STREAM , 0)) == INVALID_SOCKET) 
    { 
     printf("Could not create socket : %d" , WSAGetLastError()); 
    } 

    printf("Socket created.\n"); 

    return 0; 
} 

コンパイルエラー:

undefined reference to `[email protected]' 
undefined reference to `[email protected]' 
undefined reference to `[email protected]' 
undefined reference to `[email protected]' 

それから私はこれがwinsock2.hのlibが含まれていないことを意味しているとします。 #pragma comment()なしでこれを行うには?

+0

@ a3fアラートありがとう!私はちょうど答えを確認し、今働いています –

答えて

0

#include <winsock2.h>使い方は問題ありません。プロジェクト設定を更新し、ws2_32.libをリンクライブラリとして追加する必要があります。

Qtの場合、この行を.proファイルに追加するだけです。あなたは、Microsoftのコンパイラを使用している前提としています

LIBS += ws2_32.lib 

注:私は実際には、コマンドラインから「ビルド」ディレクトリを削除してから、変更を有効にするためのQt Creatorをから「クリーンビルド」をしなければなりませんでした。

+0

Visual Studioプロジェクト? –

+0

ああ、私は 'Qt'タグを見ませんでした....私はまもなくそれを修正します.... – selbie

+0

うん!このソリューションは動作します –

関連する問題