首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

无法解析的外部符号 _AllocateAndGetTcpExTableFromStack,该怎么解决

2012-05-23 
无法解析的外部符号 _AllocateAndGetTcpExTableFromStack枚举系统中的TCP连接状况,我测试用3个API.想挑选

无法解析的外部符号 _AllocateAndGetTcpExTableFromStack
枚举系统中的TCP连接状况,我测试用3个API.想挑选一种最好的.分别是GetTcpTable,GetExtendedTcpTable,AllocateAndGetTcpExTableFromStack
GetTcpTable---不能获取到进程ID
GetExtendedTcpTable---可以获取进程ID,但是Windows版本至少要Windows XP SP2,Windows Server 2003 SP1
AllocateAndGetTcpExTableFromStack---可以获取进程ID,但MSDN解释说Windows Vista和以后版本不支持
所以我想依据Windows版本分别调用GetExtendedTcpTable或AllocateAndGetTcpExTableFromStack.
问题是编译的时候显示了一个错误"无法解析的外部符号 _AllocateAndGetTcpExTableFromStack"
这问题怎么解决呢?
我当前使用Windows是Windows2003 Sp2企业版+VC2008
项目Windows版本定义文件targetver.h如下:

C/C++ code
#ifndef WINVER                         // 指定要求的最低平台是 Windows Vista。#define WINVER 0x0501           // 将此值更改为相应的值,以适用于 Windows 的其他版本。#endif#ifndef _WIN32_WINNT            // 指定要求的最低平台是 Windows Vista。#define _WIN32_WINNT 0x0501     // 将此值更改为相应的值,以适用于 Windows 的其他版本。#endif#ifndef _WIN32_WINDOWS          // 指定要求的最低平台是 Windows 98。#define _WIN32_WINDOWS 0x0410 // 将此值更改为适当的值,以适用于 Windows Me 或更高版本。#endif#ifndef _WIN32_IE                       // 指定要求的最低平台是 Internet Explorer 7.0。#define _WIN32_IE 0x0700        // 将此值更改为相应的值,以适用于 IE 的其他版本。#endif

尝试修改targetver.h也不行,越修改错误越多

我的代码如下:
C/C++ code
#include "Iphlpapi.h"#pragma comment(lib,"Iphlpapi.lib")void TestTcpTable()        //GetTcpTable,GetExtendedTcpTable,AllocateAndGetTcpExTableFromStack{    DWORD err;    DWORD sz=1024*1024;    PMIB_TCPTABLE ptt=(MIB_TCPTABLE*)new BYTE[sz];    ::memset(ptt,0,sz);    err=::GetTcpTable(ptt,&sz,0);    if(err==NO_ERROR)    {        //....    }    //....    err=::GetExtendedTcpTable(ptt,&sz,1,AF_INET,TCP_TABLE_OWNER_PID_ALL,0);    PMIB_TCPTABLE_OWNER_PID pttp=(PMIB_TCPTABLE_OWNER_PID)ptt;    if(err==NO_ERROR)    {        //....    }    //...    PMIB_TCPTABLE_OWNER_PID pttp2;    PVOID pv;    if(::AllocateAndGetTcpExTableFromStack(&pv,1,::GetProcessHeap(),0,AF_INET)==ERROR_SUCCESS)    //这里有个连接错误:error LNK2019: 无法解析的外部符号 _AllocateAndGetTcpExTableFromStack    {        //....    }}


[解决办法]
用LoadLibrary和GetProcAddress

热点排行