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 は検出されないことがわかります。