winsock2.hを使うために、Ws2_32.libをリンクしたい

windows socketを使用して、ネットワークプログラミングを始めようとしました。

    // main.cpp
    #include <winsock2.h>

    int main()
    {
        WSADATA wsaData;
        WSAStartup(MAKEWORD(2, 3), &wsaData);
        WSACleanup();
        return 0;
    }

しかし、コンパイルできない…!
原因は、winsock2.hをインクルードするためのWs2_32.libがリンクされていないことでした。
g++でライブラリをリンクする方法を調べたところ、-lオプションでリンクできるようでした。

PS C:\Users\hakamori>g++ main.cpp -lws2_32

これでコンパイルできました!
ちなみに、cl.exeでは、

PS C:\Users\hakamori>cl main.cpp ws2_32.lib

でリンクできます。
または、

#pragma comment(lib, "Ws2_32.lib")

をソースコードに追加することで、ライブラリを指定しなくても、コンパイルが勝手にリンクしてくれます。(g++では効きません)

PS C:\Users\hakamori>cl main.cpp

コメントする