Xilofeon
Messages postés55Date d'inscriptionmercredi 24 décembre 2003StatutMembreDernière intervention14 avril 2007
-
29 mars 2005 à 14:25
Xilofeon
Messages postés55Date d'inscriptionmercredi 24 décembre 2003StatutMembreDernière intervention14 avril 2007
-
29 mars 2005 à 18:02
Bonjour.
Je ne s'ai pas si cela est possible:
je cherche à raliser une DLL. (enfin sa c'est fait) Mais celle si est obligatoire pour que mon programme ce lance.
Ce que je voudrait faire c'est que si la DLL n'est pas présente, le programme puisse ce lancer quand même sans utiliser la class qui utilise des fonctions de la DLL.
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 29 mars 2005 à 15:13
Il suffit de ne pas lier la dll lors de l'édition de lien (sans utiliser le header ou le .lib). dans le prog, il suffit de faire un LoadLibrary sur la dll et vérifer sa présence.
Si oui, il ne reste plus qu'à charger les fonctions de la dll avec getProcAddress. Il est cependant nécessaire de faire des typedef pour avoir le prototype des fonctions.
Maintenant si ta dll exporte des classes je ne sais pas si c'est faisable car les noms des fonctions exportées sont alors + compliqués (transformés pour ajouter le nom de la classe et les paramètres).
Xilofeon
Messages postés55Date d'inscriptionmercredi 24 décembre 2003StatutMembreDernière intervention14 avril 2007 29 mars 2005 à 17:35
Vi c'est sa le probléme le .lib et obligatoire sinon lors du linkage sa tilte.
Je vais tenter de faire le prototype des fonctions ainsi j'aurait pu besoin du .lib.
Euh y'a des trucs spécial que je doit savoir pour faire les prototypes ? (Spécial DLL )
1er fois que je fait un prog avec DLL et je suis pas un As non plus alors je ne sait pas tout .
Bon en tout cas merci je vois vers quoi je doit me diriger toujours...
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 29 mars 2005 à 17:45
Imaginons que ta dll exporte cette fonction :
int __stdcall MyDllfct(void* p, int len);
1 - La manière la plus simple ed l'utiliser, c'est de déclarer cette fct dans un .h, inclu à la fois par le prog et la dll mais l'un l'aura en export et l'autre en importe. Pour que le linker ne "tilte" pas tu fournis un .lib qui dir que la fct est dans une dll. Cette méthode oblige la dll à être chargée au démarrage du prog sinon erreur windows.
2 - tu peux également charger la dll et la fct au runtime :