2009-11-18 37 views
3

我正在尝试使用iphlpapiGetAdapterInfo),并且无法编译代码。我有SDK 7中的iphlpapi.h,并在Visual Studio中为include文件添加了相应的路径。iphlpapi/ifdef.h

我得到以下错误...

C:\ Program Files文件\微软的SDK \ WINDOWS \ V7.0 \包括\ ifdef.h(154):错误C2146:语法错误:缺少“ ;”在标识符'NET_IFTYPE'之前

ifdef中出现这种情况的行如下所示。

typedef NET_LUID IF_LUID, *PIF_LUID; 
typedef ULONG NET_IFINDEX, *PNET_IFINDEX;  // Interface Index (ifIndex) 
typedef UINT16 NET_IFTYPE, *PNET_IFTYPE;  // Interface Type (IANA ifType) 
+1

你是否#包括之前? – 2009-11-18 15:44:19

+1

我也这么认为,内森,但我发现的页面没有关于'windows.h',只有'winsock2.h' – GManNickG 2009-11-18 15:44:56

+1

错误是关于UINT16没有被定义。它在BaseTsd.h中设置,它包含在Winsock2.h中的Windows.h中(间接)。 – 2009-11-18 15:50:53

回答

2

this page,它看起来好像你可能需要确保winsock2.h首先包括在内。我猜测它定义了其中的一些类型。

此外,NET_LUID的MSDN页面表示它至少需要Vista。确保这是真的。

4

我终于想出了如何让这个工作,所以我把它放在这里可能会遇到它的其他人。

首先,我在2003 sdk中使用visual C++ version 6.0。我使用TOOLS-> OPTIONS-> DIRECTORIES添加了sdk作为第一个选项。添加包含winsock2.h导致大约60个重定义错误。我发现有几个消息来源告诉我,winsock2 include必须在windows.h include之前。我的windows.h include是由VC++在预编译头文件stdafx.h中为我生成的,所以我移动了winsock2.h include。我现在可以编译并运行我的程序!

+1

VC6已旧并且已被破坏。它甚至不再受到Microsoft的支持。不要使用它。 – 2010-01-02 19:19:43