views:

295

answers:

2

I'm trying to use iphlpapi (GetAdapterInfo) and am having trouble compiling the code. I have iphlpapi.h from SDK 7 and have added the appropriate path to the include files in visual studio.

I get the following error...

c:\program files\microsoft sdks\windows\v7.0\include\ifdef.h(154) : error C2146: syntax error : missing ';' before identifier 'NET_IFTYPE'

The lines in ifdef where this occurs are shown below.

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)
A: 

According to this page, it looks as though you might need to make sure winsock2.h is included first. I'm guessing that it defines some of those types.

Also, the MSDN page for NET_LUID says it requires Vista at a minimum. Make sure that's true.

GMan
+1  A: 

I finally figured out how to get this to work so I'm putting this here for others who might stumble upon it.

First, I'm using visual c++ version 6.0 with the 2003 sdk. I added the sdk as the first choice using TOOLS->OPTIONS->DIRECTORIES. Adding the include winsock2.h caused about 60 redefinition errors. I found several sources telling me that the winsock2 include had to precede the windows.h include. My windows.h include was generated for me by VC++ in the precompiled header stdafx.h so I moved the winsock2.h include there. I now can compile and run my program!

Mike D
VC6 is old and busted. It's not even supported by Microsoft anymore. Don't use it.
Terry Mahaffey