Vérifier l'existence d'une fonction dans une DLL

Roro8883 Messages postés 70 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 1 février 2008 - 28 août 2006 à 19:16
hibakusha Messages postés 25 Date d'inscription vendredi 4 août 2006 Statut Membre Dernière intervention 23 mai 2007 - 1 sept. 2006 à 16:55
Bonjour, je souhaiterais savoir quelle fonction existe pour vérifier si une fonction dont je connais les paramètres et tout se trouve dans une DLL...

Ou s'il n'y a pas de fonction pour faire ça, comment pourrais-je savoir si la DLL comporte bien cette fonction ?

Et je voudrais faire cette vérification dans mon programme donc il me faut du code et pas un logiciel pour "explorer" les DLL ....

Voilà, merci d'avance

4 réponses

racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
28 août 2006 à 19:50
Salut,
Tu peux utiliser GetProcAddress(). Si le nom de la fonction passé en paramètre n'existe pas cette fonction retourne 0.
0
racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 15
28 août 2006 à 20:04
Il faut qu'un type de pointeur soit défini pour ta fonction. Exemple:
typedef int (WINAPI *PMafonction)( int , int);

Cette fonction recoit deux int et renvoit un int.

Ensuite on charge la dll:
HINSTANCE hDLL = LoadLibrary("madll.dll");

Pour obtenir le pointeur sur ta fonction, tu fais:
PMafonction  mafonction= (PMafonction) GetProcAddress(hDLL, "nomdelafonction");
if(!mafonction) -> Cette fonction n'existe pas.
else -> La fonction existe ....

Il ne faut pas oublier de libérer la dll quand on n'en a plus besoin:
FreeLibrary(hDLL);
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
28 août 2006 à 23:26
Si la fonction est exportée en NONAME c'est dans le baba la méthode par le nom, c'est ce qu'utilise MFC (entre autres).

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
1 sept. 2006 à 16:55
Et tu peut très bien trouver une fonction dont le nom est "lenomdemafonction" mais qui ne prend pas du tout les mêmes argument que ceux que tu attend, et la, c'est le drame.

Mais pourquoi as tu besoin de faire cela ? Ce que tu désires faire ne serait il pas une fausse solution à un vrai problème ?

zNoRt~!
0
Rejoignez-nous