UTILISATION DE DLL EN DELPHI
dernière mise à jour le mardi 01 février 2000
L'importation des routines d'une DLL:
Pour utiliser une routine (fonction ou procédure) contenue dans une DLL, il faut indiquer à notre programme
le nom du fichier dll,
la routine contenue dans ce fichier et que l'on veut utiliser,
le nom sous lequel cette routine pourra être appelée par notre programme.
L'importation se fait par une déclaration qui peut se situer dans la partie interface ou dans la partie implementation.
Importation par nom
Pour importer notre fonction 'somme' que nous avons créée dans le précédent chapitre , il faudra, dans notre programme faire la déclaration suivante:
Function somme(i,j:integer):integer; stdcall; external 'pMadll.dll';
indique que la fonction somme (attention les minuscules / majuscules comptent) contenue dans le fichier pMadll.dll sera utilisable dans notre programme sous le nom "somme".
Si vous voulez utiliser un autre nom que le nom de la routine contenu dans la dll, il faut utiliser "name" :
Function total(i,j:integer):integer; stdcall; external 'pMadll.dll' name 'somme';
indique que la fonction somme (attention les minuscules / majuscules comptent) contenue dans le fichier pMadll.dll sera utilisable dans notre programme sous le nom "total".
Importation par index
Function total(i,j:integer):integer; stdcall; external 'pMadll.dll' index 10;
indique que la fonction référencée par l'index 10 contenue dans pMadll.dll sera utilisable sous le nom "total".
Pour avoir plus d'explications sur stdcall cliquez ici
Pour télécharger un petit projet qui utilise la DLL que nous avons créée précédemment cliquez ici
(ajout 29/01/2000)
Une autre solution pour utiliser une DLL est de la charger en mémoire uniquement lorsque l'on en a besoin et de la libérer ensuite. (meilleure optimisation de la mémoire).
Exemple de code pour le chargement :
procedure TForm1.ButtonChargerClick(Sender: TObject);
begin
NomDll:='pMadll.dll';
hDLL:=LoadLibrary(PChar(NomDll)); // chargement de la dll
if hDLL=0 then ShowMessage('erreur au chargement de la DLL');
somme:=GetProcAddress(hDLL,'somme'); // affectation de la fonction somme de la dll à la fonction somme de notre programme
end;
Vous pouvez alors utiliser la fonction "somme" comme bon vous semble.
A la fin de son utilisation, vous déchargerez la dll
en faisant
FreeLibrary(hDLL);//libération. La Dll n'est plus utilisable
Pour télécharger un petit projet qui utilise dynamiquement la DLL que nous avons créée précédemment cliquez ici
Retour au sommaire. Chapitre précédent.