c语言 - 无法在 Visual Studio 的 WinAPI IP 帮助程序中使用 IPv6 功能



我在C程序中使用WinAPi IP助手来获得与"netstat -nao"类似的结果。

我的问题是它没有加载任何IPv6功能。以下是我的包括:

#define _WINSOCK_DEPRECATED_NO_WARNING
#include <stdio.h>
#include <WinSock2.h>
#include <IPHlpApi.h>
#include <WS2tcpip.h>
#pragma comment(lib, "iphlpapi.lib")
#pragma comment(lib, "ws2_32.lib")

这是我在 Windows 开发人员中心的示例代码中找到的

https://msdn.microsoft.com/en-us/library/windows/desktop/bb309068(v=vs.85).aspx

我还查看了包含,以确保我正在寻找的结构是"PMIB_UDP6TABLE_OWNER_PID和PMIB_TCP6TABLE_OWNER_PID",我在udpmib.h和tcpmib.h中找到了它们,它们包含在IPHlpApi.h中包含的Iprtrmib.h中。

在这些文件中,我尝试访问的部分包装在:

#ifdef _WS2IPDEF_
// Structures I desperately need
#endif

我尝试在我的头文件中使用 #ifndef _WS2IPDEF,但它只纠正了智能感知的问题。即便如此,我还需要"转到定义"才能使错误消失,并且程序仍然无法编译。

我在Windows 10机器上使用Visual Studio 2015。

在弄乱了包含之后终于找到了答案。包含需要完全按照它们在 Windows 开发人员中心中的顺序才能工作。图书馆之间的依赖关系需要以这种方式解决。

#include <winsock2.h>
#include <ws2tcpip.h>
#include <iphlpapi.h>
#include <stdio.h>

最新更新