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 5954 Date d'inscription   Statut Contributeur 216
 
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 Date d'inscription   Statut Contributeur Dernière intervention   1 331
 
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 5954 Date d'inscription   Statut Contributeur 216
 
je suppose un simple include...

COIN!
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
 
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