farvelocity

博客园 首页 新随笔 联系 订阅 管理

一个小的读取IP MAC地址中,出现了:error LNK2001: unresolved external symbol __chkesp ,经过查找原因,原来是“新”编译器的堆栈检查功能要求链接 C 运行时库,这个“新”究竟相对于哪个版本有待考究。解决办法:禁用编译器堆栈检查功能,即删除编译器开关参数中的 /GZ。

 

源代码:

 

#include <atlbase.h>
#include <atlconv.h>
#include "iphlpapi.h"
#pragma comment ( lib, "Iphlpapi.lib" )

int  main(void)
{
    PIP_ADAPTER_INFO pAdapterInfo;
    PIP_ADAPTER_INFO pAdapter = NULL;
    DWORD dwRetVal = 0;
 
    pAdapterInfo = (IP_ADAPTER_INFO *) malloc( sizeof(IP_ADAPTER_INFO) );
    ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);
 
    if (GetAdaptersInfo( pAdapterInfo, &ulOutBufLen) != ERROR_SUCCESS)
    {
        GlobalFree (pAdapterInfo);
        pAdapterInfo = (IP_ADAPTER_INFO *) malloc (ulOutBufLen);
    }
 
    if ((dwRetVal = GetAdaptersInfo( pAdapterInfo, &ulOutBufLen)) == NO_ERROR)
    {
        pAdapter = pAdapterInfo;
        while (pAdapter)
        {
                printf("------------------------------------------------------------\n");
                printf("Adapter Name: \t%s\n", pAdapter->AdapterName);
                printf("Adapter Desc: \t%s\n", pAdapter->Description);
                printf("Adapter Addr: \t");
                for (UINT i = 0; i < pAdapter->AddressLength; i++)
                {
                    printf("%02X%c", pAdapter->Address[i],      i == pAdapter->AddressLength - 1 ? '\n' : '-');
                }
                printf("Adapter Type: \t%d\n", pAdapter->Type);
                printf("IP Address: \t%s\n", pAdapter->IpAddressList.IpAddress.String);
                printf("IP Mask: \t%s\n", pAdapter->IpAddressList.IpMask.String);
             pAdapter = pAdapter->Next;
        }
    }
    else
    {
        printf("Call to GetAdaptersInfo failed.\n");
    }
    return 0;
}

 

 

posted on 2008-12-30 16:12  greatwall  阅读(824)  评论(0编辑  收藏  举报