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

标签 c visual-studio winapi

我在 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”中,并且我在 Iptrmib 中包含的 udpmib.h 和 tcpmib.h 中找到了它们。 h 包含在 IPHlpApi.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>

关于无法在 Visual Studio 的 WinAPI IP 帮助程序中使用 IPv6 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35016457/

相关文章:

c++ - 从任务栏缩略图关闭按钮打开处理 WM_CLOSE 时不显示 MessageBox

visual-studio - 尝试将文件与服务器版本进行比较时出现问题

windows - Windows 上的 OpenGL ICD 如何加载 OpenGL 1.0 和 1.1 功能?

C读取所有输入一次优化

c++ - 如果有和没有花括号

C# Visual Studio 需要引用基类 dll

sql - 关于本地数据库与基于服务的数据库的问题

c - 使用 SHFileOperation 按日期删除文件和文件夹

调用 write() 失败,原因未知

c - sscanf 循环段错误