[Delphi/VC++] Comment utiliser une DLL VC++ avec Delphi 6 ?

Comment utiliser une DLL VC++ avec Delphi 6 ? [Delphi/VC++] - Programmation

Marsh Posté le 22-01-2002 à 18:04:15    

(et faut il faire qq ch de spécial lors de la crétion de la DLL)

Reply

Marsh Posté le 22-01-2002 à 18:04:15   

Reply

Marsh Posté le 22-01-2002 à 18:31:01    

oui y a moyen d'utiliser des DLL sous Delphi 6, y a rien de spécial à faire dans la création de la DLL.
Pour l'utiliser sous Delphi y a LoadLibrary pour charger la DLL, et GetProcAddress, comme en C++ (ce sont des fonctions de l'API Windows).
y doit y avoir des exemples un peu partout là dessus (désolé là j'ai pas le temps de chercher et j'ai pas de code source qui le fait à portée de main)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 23-01-2002 à 22:37:24    

up

Reply

Marsh Posté le 23-01-2002 à 23:12:04    

bon bhen tu fais bien d'upper :
 
exemple d'utilisation d'une DLL:
 
dans les declarations de la unit:

Code :
  1. TMaFonction = procedure(parametre1, parametre2, ...); stdcall;


 
puis le chargement et l'appel:

Code :
  1. var
  2.   dll: THandle;
  3.   func: TMaFonction;
  4. begin
  5.   ...
  6.   dll := LoadLibrary("monfichier.dll" );
  7.   try
  8.     if dll = 0 then
  9.       raise Exception.Create("Erreur au chargement dela DLL" );
  10.     @func := GetProcAddress(dll, 'NomFonction');
  11.     if not (@func = nil) then
  12.       func(parametre1, parametre2, ...)
  13.     else
  14.       RaiseLastOSError;
  15.   finally
  16.     FreeLibrary(dll);
  17.   end;
  18.   ...
  19. end;


 
evidemment faut adapter le nom de la fonction dans GetProcAdress, ainsi que les paramètres dans la déclaration
 
si tu fais très souvent appel à la DLL dans le programme c'est peut etre mieux de la charger au demarrage du prog et de la liberer a la fin, pour ne pas devoir a chaque fois charger/decharger.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed