C/C++ et fonctions DLL

I'mhere -  
 fd -
bonjour tt le monde,
j'aimerai bien savoir est ce que c'est possible d'appeller les fonctions contenu dans une DLL avec un programme c ou c++.
si oui merci d'expliquer la procédure. c urgent
merci

7 réponses

Canard007 Messages postés 5936 Statut Contributeur 215
 
Concernant les dll, il faut utiliser conjointement LoadLibrary et GetProcAddress. Admettons que tu as une dll dummy.dll et une fonction foo(char *message) que tu veux appeler, ca donnera :

 HINSTANCE hLib = NULL; 
  void (WINAPI *foo)(char *message); // pointeur sur func 
   
  BOOL LoadDLL() 
  { 
        hLib = LoadLibrary("dummy.dll"); 
        if(hLib == NULL) 
              return FALSE; 
        foo = (void*)GetProcAddress(hLib, "_foo@4"); 
        if(foo = NULL) 
        { 
             FreeLibrary(hLib); 
             hLib = NULL; 
             return FALSE; 
         } 
        return TRUE; 
  } 
  



Apres tu appels la fonction normalement (n'oublie pas FreeLibrary en quittant).


COIN!
5
Jim
 
Pas besoin de faire ca de facon dynamique, si on a le fichier lib de la dll !!!
0
Aziz
 
merci Canard007 et Jim
0
Char Snipeur Messages postés 10112 Statut Contributeur 1 299
 
et comment on fait ça de façon non dynamique?

Salutation !
Char Snipeur
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Canard007 Messages postés 5936 Statut Contributeur 215
 
je suppose un simple include...

COIN!
0
Char Snipeur Messages postés 10112 Statut Contributeur 1 299
 
je ne croi pas, un include met le texte directement dans le fichier, c'est un genre de lien. Les DLL sont déjà compiler. à moins que le compilateur ne prenne pas en compte le langage déjà compiler, mais j'en doute fort...

Salutation !
Char Snipeur
0
fd
 
Pour le faire de façon non dynamique il te suffit de linker le .lib à ton projet.

(par contre avec GetProcAdresse n'oublie pas de déclarer tes fonctions en extern "C")
0