DLL windows

cs_zoomeo Messages postés 2 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 2 mai 2007 - 2 mai 2007 à 15:49
hibakusha Messages postés 25 Date d'inscription vendredi 4 août 2006 Statut Membre Dernière intervention 23 mai 2007 - 16 mai 2007 à 18:38
Salut les gars!

Je dois bosser sur un prog et j'aimerai avoir des precisions car c'est un peu confu tout ca pour moi...
En gros, pour mon programme, je dois creer deux dll:

<li>une DLL liée à l'exécutable chargée automatiquement pendant toute la durée de l'exécution.
</li><li>une DLL chargée à l'exécution uniquement pendant la phase d'initialisation.</li>quelqu'un saurait comment faire??

merci d'avance...

2 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 mai 2007 à 19:09
Vaste sujet, Richter t'expliquera tout ça avec exemples:
http://brunews.com/brunews/download/JR4.zip
http://brunews.com/brunews/download/JR4Sources.zip

ciao...
BruNews, MVP VC++
0
hibakusha Messages postés 25 Date d'inscription vendredi 4 août 2006 Statut Membre Dernière intervention 23 mai 2007 1
16 mai 2007 à 18:38
1ere dll : il faut linker ton exe avec la librairie d'exportation de la dll. Si ta dll se nome toto.dll, tu link avec toto.lib(que tu doit donc posséder). Dans les sources de ton exe tu n'as plus qu'a utiliser directement les symboles de toto.dll (a condition d'avoir bien inclus les headers, tel que toto.h par exemple)

2eme dll : il faut tu que charge toi même ta dll "dans" ton exe, via un HMODULE h = LoadLibrary("titi.dll");
ensuite tu doit déclarer des pointeurs sur les methodes qui t'interesse dans titi.dll, comme par exemple
   typedef void (WINAPI *pouetepouete)(const char* parameter);
ensuite, si le LoadLibrary a fontionner, tu recupere l'adresse de la methode en question :
   pouetepouete proc = (pouetepouete)GetProcAddress(h, "nomdelamethode");

nom de la methode est le nom de la methode dont tu as besoin dans la dl.

tout cela a renouveller autant de fois (sauff le chargement de la dll) qu'il y a de methode qui t'interesse.

A la fin, n'oublie pas de liberer la dll par FreeLibrary(h);

Il manque encore quelque subtilité, comme verifier les convention d'appel des methode de titi.dll etc, sinon plantage en vu.

zNoRt~!
0
Rejoignez-nous