2013-08-04 2 views
2

컴퓨터의 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입니다.

누구든지 이런 종류의 오류의 원인을 지적 할 수 있습니까?

+1

\ [\ _GetAdaptersAddresses @ 20에 대한 정의되지 않은 참조] -하지만 -liphlpapi 포함 (http://stackoverflow.com/questions/10972794/undefined-reference-to-getadaptersaddresses20-but-i-included) -liphlpapi) – stijn

+0

나는 C++을 전혀 볼 수 없다. –

답변

4

GCC는 #pragma comment을 지원하지 않으며 이에 상응하는 항목이 없습니다. 특별히 Iphlpapi.lib 라이브러리와 연결되도록 프로젝트 설정을 업데이트해야합니다.

+0

예, 링커 설정에서 -liphlpapi를 추가했는데 효과가있었습니다. 고맙습니다. – Nishant

관련 문제