Création et appel de DLL [Résolu]

Signaler
Messages postés
12
Date d'inscription
lundi 1 septembre 2003
Statut
Membre
Dernière intervention
16 juin 2008
-
Messages postés
12
Date d'inscription
lundi 1 septembre 2003
Statut
Membre
Dernière intervention
16 juin 2008
-
Bonjour a tous,

N'ayant encore jamais touché à la création de DLL, je souhaiterais pouvoir regrouper certaines fonctions dans une DLL afin de simplifier le dev. (Les fonctions sont appellées par diverses appli et si je touche a une fonction elle doit etre corriger pour toutes les appli)

Mon exemple (qui fonctione pas, bien sur !!!!!) :

1 - La fonction dans la DLL

Imports

System.Net.NetworkInformation
Public

Class DLL_Hardware

Public
Function GetMACs()
As
String
'------------------------------------------------------------------------------------
' Cette fonction recupere les MAC Adresse de l'ordinateur...
'------------------------------------------------------------------------------------
' Une fois recuperees, elle sont stockees dans un tableau sous le format suivant :
' - Type de la carte (Reseau, WIFI, etc....)
' - ID de la carte {XXXXXXXXXXXXXXXXXX}
' - MACAdresse 00-00-00-00-00-00-00-00
'------------------------------------------------------------------------------------
Dim NICs()
As NetworkInterface = NetworkInterface.GetAllNetworkInterfaces()

Dim MACs(0)
As
String
Dim NbMAC
As
Integer = -1

For
Each adapter
As NetworkInterface
In NICs

  Dim MAC
As PhysicalAddress = adapter.GetPhysicalAddress()

  Dim Name
As
String = adapter.Name
Dim IDMac
As
String = adapter.Id

  Dim bytes
As
Byte() = MAC.GetAddressBytes()

  If bytes.Length > 0
Then NbMAC += 1

    ReDim
Preserve MACs(NbMAC)
    MACs(NbMAC) = Name &
"|" & IDMac &
"|"
    For i
As
Integer = 0
To bytes.Length - 1
      MACs(NbMAC) += bytes(i).ToString(
"X2")

      If i <> bytes.Length - 1
Then
        MACs(NbMAC) +=
"-"
      End
If
    Next
  End
If
Next

Return Join(MACs,
"§")

End
Function
End Class

2 - Appel de la DLL (qui est ajouter au projet !)

<DllImport(

"MyFirstDLL.dll", EntryPoint:=
"GetMACs")> _

Friend
Function GetMACs()
As
String
End
Function

3 - Utilisation de la fonction

Dim AllMACs As
String = GetMACs ()

et 4 (vous vous en doutez !!!!) le Problème....

Lorsque je fait çà, j'ai l'erreur suivante :
"Impossible de trouver le point d'entrée 'GetMACs' dans la DLL 'MyFirstDLL.dll'."

Et je trouve rien de clair pour m'expliquer comment faire ce style d'appel vers des fonctions que je
centralise dans une DLL...

Une ame charitable pour expliquer "la vie" à un jeune chouba debutant
dans le monde obscure des DLL ? 

Merci d'avance
Thierry

4 réponses

Messages postés
51
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
2 octobre 2008

Bonjour,

Alors bien évidemment comme tu l'as dis, il faut l'ajouter comme référence au projet.
Le point 2 n'est pas obligatoire à mon avis.
Le point 3 doit être remplacé par mon exemple.

Ensuite dans ton programme tu fais comme suit :
dim dblk as DLL_Hardware
messagebox.show(dblk.GetMacs)

Cela devrait marcher.
J'espère que cela pourra t'aider.
Messages postés
12
Date d'inscription
lundi 1 septembre 2003
Statut
Membre
Dernière intervention
16 juin 2008

Merci bcp, je test ca dessuite....
Messages postés
12
Date d'inscription
lundi 1 septembre 2003
Statut
Membre
Dernière intervention
16 juin 2008

Super ca fonctionne !

Il faut juste rajouter un imports et déclaré la variable avec un constructeur NEW. Résumons donc :

1 - Compiler la DLL (avec les classes de fonctions comme dans l'etape 1 de mon premier message)

2 - Ajouter la DLL au projet par le menu [Projet/ajouter une reference...]
 
3 - Puis utiliser les fonctions de la DLL dans mon appli comme suit :
Imports

MyFirstDLL
puis

Private

Sub Maker_Shown(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles
Me.Shown

Dim Macs(,) AsString
Dim MyHardWare
As
New DLL_Hardware

Macs = Hardware.GetMACs

....

End
SubEncore mille mercis DblK pour les precieuses heures (voir peut etre jours) que tu m'a fait gagner...

Amicalement
Thierry
Messages postés
12
Date d'inscription
lundi 1 septembre 2003
Statut
Membre
Dernière intervention
16 juin 2008

Oups !! Dans l'etape 3 il fallait lire :

Macs = MyHardware .GetMACs

et non :

Macs = Hardware.GetMACs

Désolé