컴퓨터의 MAC 번호를 추출하여 인쇄하는 C 코드를 작성하려고합니다. 다음은 내 코드입니다.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;
}
하지만 내 코드를 실행할 때 다음과 같은 오류 제공 :
오류 : 기능 에 포함되어 20 '
모든 GetAdaptersAddresses (하지만) @ GetAdaptersAddresses`로 정의되지 않은 참조를 iphlpapi.h 라이브러리.
GetAdaptersInfo() 함수를 사용하여 코드를 실행 해 보았지만 같은 종류의 오류가 발생합니다.
나는 GNU GCC C++ 98 컴파일러 버전을 사용하여 내 코드를 컴파일 할 CodeBlocks을 사용하고 있습니다.
내가 현재 일하고있는 운영 체제는 입니다. Windows 7입니다.
누구든지 이런 종류의 오류의 원인을 지적 할 수 있습니까?
\ [\ _GetAdaptersAddresses @ 20에 대한 정의되지 않은 참조] -하지만 -liphlpapi 포함 (http://stackoverflow.com/questions/10972794/undefined-reference-to-getadaptersaddresses20-but-i-included) -liphlpapi) – stijn
나는 C++을 전혀 볼 수 없다. –