一般程序员用2种编译器,一种是经典的VC++6.0,一种是VS2003/2005/2008/2010高一版本的.
---------为什么没有Iphlpapi.h与Iphlpapi.lib的根本原因,是没有安装平台SDK(Platform SDK ),XP用XP,2000就用2000的,最好不要用混.下了一个版本安装过,不知为何原因安装不上,这个网站上有下载http://www.x86pro.com/articleViewer.php?pid=71另外注意,在2003年的时候,微软就停止了对VC++6.0的平台SDK的支持,所以只能下载之前的
---------解决办法:VC++6.0是肯定没有,必须要下载安装,而VS2003以上版本,则不需要安装了,直接就能用,我用的VS2008立马编译成功.在文章最后,我会把代码贴出来-------详见代码(有说明)
VC++6.0呢?只能安装平台SDK了,但是在网上搜索到的机会很少,在微软官方网站,我也没有搜索到,这个文件一般是200多M,怎么安装,上面那个提供了安装方法.,可能我是XP版本,所以没安装成功,不过你们可以多尝试一下.
-------------------总结:
最后,我不得不放弃用VC++6,0了,因为同一段代码,放在VS2008上能正常运行,而放在VC++6.0上却不能,最终原因是VC++版本太老,不支持一些平台SDK.
下面就以实例来介绍.是一个专门获取网卡信息的,如你用的是什么网卡,子网掩码是多少,MAC地址是多少,这些仅仅是最基本的,最基本的都不支持了,我不知道深入开发下去,会出现什么莫名其妙的Debug
-------------代码如下:
#include <windows.h>
#include <Iphlpapi.h>
#include <stdio.h>
#pragma comment(lib,"Iphlpapi.lib")
int main()
{ PIP_ADAPTER_INFO pAdapterInfo;
PIP_ADAPTER_INFO pAdapter = NULL;
DWORD dlRetVal = 0;
pAdapterInfo = ( IP_ADAPTER_INFO *)malloc( sizeof(IP_ADAPTER_INFO) );
ULONG ulOutbufLen = sizeof(IP_ADAPTER_INFO);
if ( ERROR_BUFFER_OVERFLOW == GetAdaptersInfo( pAdapterInfo, &ulOutbufLen) )
{
free(pAdapterInfo);
pAdapterInfo = (IP_ADAPTER_INFO *) malloc (ulOutbufLen);
}
dlRetVal = GetAdaptersInfo( pAdapterInfo, &ulOutbufLen );
if ( NO_ERROR == dlRetVal )
{
pAdapter = pAdapterInfo;
while ( pAdapter )
{
printf("/tAdapter Name: /t%s/n", pAdapter->AdapterName);
printf("/tAdapter Desc: /t%s/n", pAdapter->Description);
printf("/tIP Address: /t%s/n", pAdapter->IpAddressList.IpAddress.String);
printf("/tIP Mask: /t%s/n", pAdapter->IpAddressList.IpMask.String);
pAdapter = pAdapter->Next;
}
}
getchar();
return 0;
}