windows下MSYS、MinGW编译环境使用网络API时报错:undefined reference to `inet_pton’解决办法
mingw-gcc环境使用网络需要加上库 -lws2_32。
如果是使用的是Qt Creator那么需要在.pro文件中加入一行:win32:LIBS += -lws2_32
。
当在项目中使用inet_pton、inet_pton、inet_ntop、inet_ntop
等ip转换函数时会报未定义的错误,这是因为在windows系统下这些函数的定义在头文件winsock2.h
和ws2tcpip.h
中,这几个函数能够编译取决于_WIN32_WINNT
这个宏定义!
而mingw-gcc中的_mingw.h
头文件定义了宏_WIN32_WINNT
的值为0x0502,这个值代表的是当前系统是Windows Server 2003,导致在编译的时候不会将这几个ip地址转换函数编译进去,所以就需要将这个宏的值改为0x0600,表示使用的是Windows Vista。
对于此值的定义可以查看微软官方的解释:https://learn.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt?view=msvc-170
!!注意!!
保险起见,不要在_mingw.h中更改_WIN32_WINNT!
而是在你自己项目中使用到的时,添加头文件ws2tcpip.h和winsock2.h的上方取消定义在重新定义!如下图:
ends…