Mingw编译器使用iphlpapi头文件的问题

⌚Time: 2024-07-17 14:15:17

👨‍💻Author: Jack Ge

我用到iphlpapi.h里面的GetTcpTable2GetPerTcpConnectionEStats函数时报错,未定义

error: 'GetPerTcpConnectionEStats' was not declared in this scope

这些函数是在iphlpapi.h头文件里里面声明的,因为一些条件编译指令略过了。我发现需要一个_WS2IPDEF_宏定义和NTDDI_VERSION大于0x06000000_WS2IPDEF_是在Ws2Ipdef.h头文件里面定义的。加上头文件包含

#include <Ws2Ipdef.h>

还会报错未定义一堆

error: 'ADDRESS_FAMILY' was not declared in this scope

还需要加上windows.hwinsock2.h两个头文件

另外还需要在iphlpapi.h头文件之前加上这样一句,定义你的系统版本为window10

#define _WIN32_WINNT 0x0A00

所以最后的结果就是

#include <windows.h>
#include <winsock2.h>
#include <Ws2Ipdef.h>
#define _WIN32_WINNT 0x0A00
#include <iphlpapi.h>

我感觉Mingw不能很好的支持windows api的使用,不是微软原生的编译器。如果用msvc编译器大概不会有这种问题。