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 5931 Date d'inscription   Statut Contributeur Dernière intervention   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 9813 Date d'inscription   Statut Contributeur Dernière intervention   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 5931 Date d'inscription   Statut Contributeur Dernière intervention   215
 
je suppose un simple include...

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