Utilisation de DLL C/C++.

 

1 - Une DLL C simple avec Visual C++ 5.

Avec VC++5.0 créer un nouveau projet Win32 Dynamic-Link Library.
Créer un nouveau fichier de définition (.def) :

LIBRARY MaDLL


EXPORTS
AjouteDouble @1

OteDouble @2

Exemple1 : Le fichier .DEF.

AjouteDouble et OteDouble sont les deux fonctions que nous allons retrouver dans notre source C. Pour ajouter de nouvelle fonctions, les inscrirent dans le fichier .def et augmenter le numéro de fonction : DiviseDouble @3

Puis créer un nouveau fichier contenant les fonctions de la DLL (.c) :

#include <windows.h>
#include <ole2.h>

double _stdcall AjouteDouble(double a, double b)
{
return (a + b);
}

double _stdcall OteDouble(double a, double b)
{
return (a - b);
}

Exemple 1 : Le source.

Nous retrouvons ici le source de nos deux fonctions AjouteDouble et OteDouble et le code qui leurs est associés.

Enfin construire la DLL (Rebuild All).
La DLL devrat enfin être copiée dans le répertoire system de Windows (c:\WinNt\System32 pour NT)

 

2 - Utilisation de la DLL dans VB 5.

Créer un nouveau projet VB5 "EXE Standard".

Ajouter dans la form (feuille) trois TextBox : Text1, Text2, Text3
et deux boutons : Command1 et Command2 (un pour chaque fonction).

Puis saisissez le code suivant :

Option Explicit

' Déclaration de la fonction externe AjouteDouble
Private Declare Function AjouteDouble _
Lib "MaDLL.dll" ( _
ByVal a as double, _
ByVal a as double _
) as double

' Déclaration de la fonction externe OteDouble
Private Declare Function OteDouble _
Lib "MaDLL.dll" ( _
ByVal a as double, _
ByVal a as double _
) as double

___________________________________________________________________________

Private Sub Command1_Click()

' Text3 contient la valeur de retour (le resultat) de la fonction AjouteDouble
' alors que Text1 et Text2 sont les deux paramètres de la fonction
' La fonction retourne un double, pour cette raison, nous devons le convertir en texte (Str)
' Les paramètres de la fonction C sont des double, nous devons donc convertir Text1 et Text2 en double (Clng)


Text3.text = Str(AjouteDouble(Clng(Text1.Text), Clng(Text2.Text)))
End Sub

__________________________________________________________________________

 

Private Sub Command2_Click()

' Text3 contient la valeur de retour (le resultat) de la fonction OteDouble
' alors que Text1 et Text2 sont les deux paramètres de la fonction
' La fonction retourne un double, pour cette raison, nous devons le convertir en texte (Str)
' Les paramètres de la fonction C sont des double, nous devons donc convertir Text1 et Text2 en double (Clng)


Text3.text = Str(OteDouble(Clng(Text1.Text), Clng(Text2.Text)))
End Sub

Consulter le tableau des correspondance de conversion C/C++ <> VB