我正在尝试使用 CreateIpForwardEntry 向路由表添加一些规则,首先需要在win7上调用 GetIpInterfaceEntry (请参阅this)。这是我的代码的一部分:
#pragma warning(disable: 4996)
#define WIN32_LEAN_AND_MEAN
#define _WIN32_WINNT 0x601
//#define _WS2IPDEF_
//#define __IPHLPAPI_H__
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <netioapi.h>
#include <iphlpapi.h>
#include <iostream>
#include <vector>
#include <string>
using namespace std;
#pragma comment(lib, "iphlpapi.lib")
int main() {
typedef DWORD(__stdcall *IPINTENTRY)(PMIB_IPINTERFACE_ROW);// undeclared identifier
MIB_IPINTERFACE_ROW info;
info.InterfaceIndex = 1;
memset(&(info.InterfaceLuid),0,sizeof(info.InterfaceLuid));
info.Family = AF_INET;
HINSTANCE hInst = ::LoadLibrary("Iphlpapi.dll");
IPINTENTRY pFunGetInfEntry = (IPINTENTRY)GetProcAddress(hInst,"GetIpInterfaceEntry");
DWORD dwRet = pFunGetInfEntry(&info);
}
代码无法编译, PMIB_IPINTERFACE_ROW 是未声明的标识符,我查看了windows标题,它是控制流程的 WS2IPDEF 。我#defined它但仍然在工作。有人一直在使用这个功能吗?感谢。
答案 0 :(得分:3)
是不编译,编译还是不运行?要获得编译代码,我必须更改包含:我删除了
#include <netioapi.h>
#include <iphlpapi.h>
并将其替换为
#include <ws2def.h>
#include <ws2ipdef.h>
#include <iphlpapi.h>
按照&#34; netioapi.h&#34;。
顶部的评论答案 1 :(得分:1)
按此顺序包含以下标题:
#include <winsock2.h>
#include <windows.h>
#include <ws2def.h>
#include <ws2ipdef.h>
#include <iphlpapi.h>
#include <netioapi.h>