Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2184 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [c++] Récupérer une mac adresse (error au link)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c++] Récupérer une mac adresse (error au link)

n°1829803
BowserJr
Posté le 20-12-2008 à 13:25:23  profilanswer
 

Voila, en fait je cherche un moyen de récupérer la mac adresse du pc sur lequel le code tournerai. J'ai un peu cherché sur le net après un moyen d'y arriver mais je n'ai rien de trouver de vraiment convainquant.
 
Comme compilo j'utilise Dev-C++, et je suis sous windows XP.
 
Pour le moment j'en suis avec ce code la :
Je vous avoue que je me fout un peu de la façon dont c'est codé du moment ou j'arrive à compiler un truc qui me renvera la mac adresse, c'est pourquoi si vous avez une toute autre solution valable et qui compile je me fout de la correction du code ci-dessous ^^
 

Code :
  1. #include <windows.h>
  2.    #include <wincon.h>
  3.    #include <stdlib.h>
  4.    #include <stdio.h>
  5.    #include <time.h>
  6.    typedef struct _ASTAT_
  7.    {
  8.       ADAPTER_STATUS adapt;
  9.       NAME_BUFFER    NameBuff [30];
  10.    }ASTAT, * PASTAT;
  11.    ASTAT Adapter;
  12.    int main ()
  13.    {
  14.       NCB Ncb;
  15.       UCHAR uRetCode;
  16.       char NetName[50];
  17.       memset( &Ncb, 0, sizeof(Ncb) );
  18.       Ncb.ncb_command = NCBRESET;
  19.       Ncb.ncb_lana_num = 0;
  20.       uRetCode = Netbios( &Ncb );
  21.       printf( "The NCBRESET return code is: 0x%x \n", uRetCode );
  22.       memset( &Ncb, 0, sizeof (Ncb) );
  23.       Ncb.ncb_command = NCBASTAT;
  24.       Ncb.ncb_lana_num = 0;
  25.       Ncb.ncb_callname[0] = '*';
  26.       Ncb.ncb_callname[1] = ' ';
  27.       Ncb.ncb_callname[2] = ' ';
  28.       Ncb.ncb_callname[3] = ' ';
  29.       Ncb.ncb_callname[4] = ' ';
  30.       Ncb.ncb_callname[5] = ' ';
  31.       Ncb.ncb_callname[6] = ' ';
  32.       Ncb.ncb_callname[7] = ' ';
  33.       Ncb.ncb_callname[8] = ' ';
  34.       Ncb.ncb_callname[9] = ' ';
  35.       Ncb.ncb_callname[10] = ' ';
  36.       Ncb.ncb_callname[11] = ' ';
  37.       Ncb.ncb_callname[12] = ' ';
  38.       Ncb.ncb_callname[13] = ' ';
  39.       Ncb.ncb_callname[14] = ' ';
  40.       Ncb.ncb_callname[15] = ' ';
  41.       //strcpy( Ncb.ncb_callname,  "*               " );
  42.       Ncb.ncb_buffer = ( unsigned char *) &Adapter;
  43.       Ncb.ncb_length = sizeof(Adapter);
  44.       uRetCode = Netbios( &Ncb );
  45.       printf( "The NCBASTAT return code is: 0x%x \n", uRetCode );
  46.       if ( uRetCode == 0 )
  47.       {
  48.          printf( "The Ethernet Number is: %02x%02x%02x%02x%02x%02x\n",
  49.                   Adapter.adapt.adapter_address[0],
  50.                   Adapter.adapt.adapter_address[1],
  51.                   Adapter.adapt.adapter_address[2],
  52.                   Adapter.adapt.adapter_address[3],
  53.                   Adapter.adapt.adapter_address[4],
  54.                   Adapter.adapt.adapter_address[5] );
  55.       }
  56.       return 0;
  57.    }


 
Ce qui me donne une joli erreur de link que voici :
 
  [Linker error] undefined reference to `Netbios@4'  
  [Linker error] undefined reference to `Netbios@4'  
  ld returned 1 exit status  

mood
Publicité
Posté le 20-12-2008 à 13:25:23  profilanswer
 

n°1829866
superbob56
Posté le 20-12-2008 à 18:39:21  profilanswer
 

Le problème doit venir de ton linkage uniquement (cad : pas du code) ...
Est-ce que tu as bien défini toutes les librairies nécessaires à inclure ? (-lxxx pour gcc)


---------------
By bob.
n°1830248
BowserJr
Posté le 22-12-2008 à 00:44:48  profilanswer
 

C'est justement ça le problème, j'ai trouvé pas mal de code proposant de récupérer la mac adresse, que ça soit sur le net ou sur news groupe, Mais tout au mieu, si le même le code compile sans erreur (et c'est rare avec les erreurs de conversion ULONG / char, ect) il me fait automatiquement une erreur au linkage. J'ai essayé d'y ajouter à peu pret toutes les librairie que j'ai rencontrées sur différent site mais mon niveau en connaissance et langage C n'est pas assez haut que pour tout comprendre aux fonction de l'api ou autre, je me contente simplement de "plagier" du code en espérant que cela fonctionne. (je sais ça n'est pas bien mais j'ai fait toute une applic et j'aimerai la "protéger" en me servant de la mac adresse ^^)

n°1830294
superbob56
Posté le 22-12-2008 à 10:11:01  profilanswer
 

Pour info, tu peux déjà regarder sur le site de microsoft ce qu'ils disent sur le fonction Netbios (qui pose problème dans ton cas).
En l'occurrence l'info est là : http://msdn.microsoft.com/en-us/li [...] S.85).aspx
Déjà ils disent que cette fonction n'est pas disponible pour Vista et Server 2008 et toutes les version futures, donc ton code risque de vite périmer.
Ensuite ils disent à la fin que la librairie statique à utiliser est Netapi32.lib.
Donc vérifie bien que cette librairie est correctement incluse (je ne pourrai pas te dire comment car je ne connais pas très bien Dev-C++).
 
Conseil amical :
De façon générale quand tu codes pour Windows regarde la doc MSDN qui est très complète ...
Une simple recherche google du style Netbios MSDN function te donne le résultat assez vite ...


---------------
By bob.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [c++] Récupérer une mac adresse (error au link)

 

Sujets relatifs
Récupérer données UTF8récupérer des informations d'une feuille et les placer dans une autre
Comment recuperer le username windows sous VBA?[Perl] Récupérer le résultat d'une requète SQL
Urgent SVP : Comment renomer un fichier récupérer par FTPWYSIWYG - Enregistrer code HTML - Recuperer format interprétée
Récuperer des emails, problèmes d'encodagesRecuperer valeur inputbox.
envoyer formulaire sur une adresse e-mailRécupérer la saisie sur userform dans la macro
Plus de sujets relatifs à : [c++] Récupérer une mac adresse (error au link)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR