2

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

4

1 に答える 1