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