C/C++ et fonctions DLL

Fermé
I'mhere - 29 août 2004 à 03:05
 fd - 1 sept. 2004 à 17:45
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 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
30 août 2004 à 15:45
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
Pas besoin de faire ca de facon dynamique, si on a le fichier lib de la dll !!!
0
merci Canard007 et Jim
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
1 sept. 2004 à 08:19
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 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
1 sept. 2004 à 10:20
je suppose un simple include...

COIN!
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
1 sept. 2004 à 12:47
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
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