cs_zoomeo
Messages postés2Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention 2 mai 2007
-
2 mai 2007 à 15:49
hibakusha
Messages postés25Date d'inscriptionvendredi 4 août 2006StatutMembreDernière intervention23 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??
hibakusha
Messages postés25Date d'inscriptionvendredi 4 août 2006StatutMembreDernière intervention23 mai 20071 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.