2

コンピュータの MAC 番号を抽出して出力する C コードを書き込もうとしています。以下は私のコードです。

#ifndef WINVER
#define WINVER 0x0600
#endif

#include <stdlib.h>
#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <assert.h>
#pragma comment(lib, "IPHLPAPI.lib")

// BYTE has been typedefined as unsigned char
// DWORD has been typedefined as 32 bit unsigned long

static void PrintMACaddress(unsigned char MACData[])
{
    printf("MAC Address: %02X-%02X-%02X-%02X-%02X-%02X\n",
    MACData[0], MACData[1], MACData[2], MACData[3], MACData[4], MACData[5]);
}

// Fetches the MAC address and prints it
static void GetMACaddress(void){
    IP_ADAPTER_ADDRESSES AdapterInfo[16];       // Allocate information for up to 16 NICs
    DWORD dwBufLen = sizeof(AdapterInfo);       // Save memory size of buffer

    // Arguments for GetAdapterAddresses:
    DWORD dwStatus = GetAdaptersAddresses(0, 0, NULL, AdapterInfo, &dwBufLen);
                                                                // [out] buffer to receive data
                                                                // [in] size of receive data buffer

    assert(dwStatus == ERROR_SUCCESS);                          // Verify return value is valid, no buffer overflow
    PIP_ADAPTER_ADDRESSES pAdapterInfo = AdapterInfo;           // Contains pointer to current adapter info

    do {
        PrintMACaddress(pAdapterInfo->Address);                 // Print MAC address
        pAdapterInfo = pAdapterInfo->Next;                      // Progress through linked list
    }while(pAdapterInfo);                                       // Terminate if last adapter
}

int main(){
    GetMACaddress();
    return 0;
}


しかし、コードを実行すると、次のエラーが表示されます:
エラー: `GetAdaptersAddresses@20' への未定義の参照

すべて、GetAdaptersAddresses()関数はiphlpapi.hライブラリに含まれています。 GetAdaptersInfo()
関数を使用してコードを実行しようとしましたが、同じ種類のエラーも発生します。CodeBlocksを 使用して、 GNU GCC C++ 98コンパイラ バージョン を使用してコードをコンパイルしています。私が取り組んでいるオペレーティング システムはWindows 7です。 この種のエラーの理由を指摘できる人はいますか。




4

1 に答える 1

4

GCC はサポートしておらず#pragma comment、同等のものはありません。ライブラリと具体的にリンクするには、プロジェクト設定を更新する必要がありますIphlpapi.lib

于 2013-08-04T18:24:30.290 に答える