MinGW環境のC言語のソケット通信のメモ
メモとして残します。
Windowsでソケット通信を行うのに必要なライブラリは、Ws2_32.libです。
1 |
gcc socket_client.c -lws2_32 |
しかし、そのままMinGW環境でコンパイルしようとするとgetaddrinfo()とfreeaddrinfo()のところで
1 2 |
undefined reference to `getaddrinfo' undefined reference to `freeaddrinfo' |
などのエラーが発生します。
このようなエラーを防ぐにはソースコードのヘッダー宣言より上に
1 |
#define _WIN32_WINNT 0x0501 |
などとdefine定義を行うことでコンパイルができるようになります。
Windowsのオペレーティングシステムの関数を用いるときに必要となるときがあるらしいです。
以上です。
参考
MSDN:(https://msdn.microsoft.com/library/windows/desktop/aa383745#setting_winver_or__win32_winnt)
_WIN32_WINNT の定義について、Windowsのバージョンごとに定義が決まっているらしいです。