Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

ViTALiTY

MAC address em C (Windows)

Mensagens Recomendadas

ViTALiTY

Basicamente precisava de um código que fosse buscar o MAC address do computador.

O código para Linux já tenho a funcionar, para Windows não:

#include <winsock2.h>
#include <iphlpapi.h>
#include <string.h>

void PrintMACaddress (BYTE *addr)
{

   int i;
  for (i = 0; i < 8; i++)
  {
     printf ("%x ", *addr++);
  }
}

static void GetMACaddress(void)
{
  IP_ADAPTER_INFO AdapterInfo[16];       // Allocate information for up to 16 NICs
  DWORD dwBufLen = sizeof (AdapterInfo);  // Save memory size of buffer

  DWORD dwStatus = GetAdaptersInfo(AdapterInfo, &dwBufLen);                  // [in] size of receive data buffer
  if (dwStatus != ERROR_SUCCESS)
  {
     printf ("GetAdaptersInfo failed. err=%d\n", GetLastError ());
     return;
 }

  PIP_ADAPTER_INFO 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 ();
}

Os erros:

C:\Users\***\Desktop\testewindows7\main.c||In function 'PrintMACaddress':|
C:\Users\***\Desktop\testewindows7\main.c|11|warning: incompatible implicit declaration of built-in function 'printf' [enabled by default]|
C:\Users\***\Desktop\testewindows7\main.c||In function 'GetMACaddress':|
C:\Users\***\Desktop\testewindows7\main.c|23|warning: incompatible implicit declaration of built-in function 'printf' [enabled by default]|
C:\Users\***\Desktop\testewindows7\main.o:main.c|| undefined reference to `GetAdaptersInfo@8'|
||=== Build finished: 1 errors, 2 warnings (0 minutes, 3 seconds) ===|

Desde já obrigado.

Editado por pmg
pastebin.com/wGWQtA5H copiado para o tópico

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

1º - aumenta o nível de warnings do teu compilador

2º - não ignores nenhuma mensagem de warnign do teu compilador

3º - faz include do header stdio.h


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ViTALiTY

1º - aumenta o nível de warnings do teu compilador

2º - não ignores nenhuma mensagem de warnign do teu compilador

3º - faz include do header stdio.h

Incluir o header diminuiu a lista de erros, obrigado.

Fiquei-me só com este, que não faço ideia como resolver...

C:\Users\***\Desktop\testewindows7\main.o:main.c|| undefined reference to `GetAdaptersInfo@8'|
||=== Build finished: 1 errors, 0 warnings (0 minutes, 3 seconds) ===|

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

tens que fazer link da lib: "Iphlpapi.lib"

mais info


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ViTALiTY

tens que fazer link da lib: "Iphlpapi.lib"

mais info

Obrigado pela resposta.

Então basicamente adicionar:

#include <stdlib.h>
#pragma comment(lib, "IPHLPAPI.lib")

ao programa? Continua com o mesmo erro... :confused:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

qual e' o compilador?


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pikax

se nao me engano, o pragma comment nao funciona no C::B, o codigo no site da MS e' para o VS.

Vai as configuracoes do codeBlocks e adiciona a lib no linker


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.