【问题标题】:Can't use IPv6 functionality in WinAPI IP helper with Visual Studio无法在 Visual Studio 的 WinAPI IP 帮助程序中使用 IPv6 功能
【发布时间】:2016-01-26 14:39:44
【问题描述】:

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

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

#ifdef _WS2IPDEF_
// Structures I desperately need
#endif

我尝试在我的头文件中使用#ifndef _WS2IPDEF,但它只纠正了智能感知的问题。即使这样,我也需要“去定义”以使错误消失并且程序仍然无法编译。

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

【问题讨论】:

  • 如果您遇到编译器或链接器错误,如果您发布这些错误消息,将会有很大帮助。
  • 我在编译时有很多错误,但它们都指的是我正在尝试使用的结构。它们是变量的“未声明标识符”和“标识符 X 未定义”

标签: c visual-studio winapi


【解决方案1】:

在弄乱了包含后终于找到了答案。这些包含需要完全按照它们在 Windows 开发中心中的顺序才能工作。需要这样解决库之间的依赖关系。

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

【讨论】:

    猜你喜欢
    • 2021-10-04
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    相关资源
    最近更新 更多