我正在尝试在 c++ 应用程序中使用DHCP 服务器管理 API 。当我想使用 DhcpAddServer 函数时,我总是遇到链接器错误(LNK2001 未解析的外部符号 _DhcpAddServer)。所有其他功能似乎都可以正常工作。
我已经尝试过 SDK V7.0A 和 V7.1(目标系统是 Win XP)。
这是一个测试代码:
#include <windows.h>
#include <dhcpsapi.h>
#include <tchar.h>
#pragma comment(lib, "dhcpsapi.lib")
DWORD TestDHCPAddServer();
DWORD TestDHCPGetVersion();
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
DWORD TestDHCPAddServer()
{
DHCP_SERVER_INFO serverInfo;
DWORD errorCode=0;
serverInfo.Version = 0;
serverInfo.ServerName = L"xxxx";
serverInfo.ServerAddress = 1234;
serverInfo.Flags = 0;
serverInfo.State = 0;
serverInfo.DsLocation = NULL;
serverInfo.DsLocType = 0;
errorCode = DhcpAddServer(0, NULL, &serverInfo, NULL, NULL);
return errorCode;
}
DWORD TestDHCPGetVersion()
{
DWORD majorVersion = 0;
DWORD minorVersion = 0;
DWORD errorCode = 0;
errorCode = DhcpGetVersion(NULL, &majorVersion, &minorVersion);
return errorCode;
}
删除 TestDHCPAddServer 后,代码会编译,这意味着该 lib 可以正常工作。我还使用了 dumpbin.exe /exports,它说该函数应该在 lib 的两个版本中都可用。
当使用 /verbose 运行链接器时,我可以看到它在 lib 中找到了 DhcpGetVersion,但没有找到 DhcpAddServer。