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

Signaler
Messages postés
70
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
1 février 2008
-
Messages postés
25
Date d'inscription
vendredi 4 août 2006
Statut
Membre
Dernière intervention
23 mai 2007
-
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

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Tu peux utiliser GetProcAddress(). Si le nom de la fonction passé en paramètre n'existe pas cette fonction retourne 0.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
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);
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
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++
Messages postés
25
Date d'inscription
vendredi 4 août 2006
Statut
Membre
Dernière intervention
23 mai 2007
1
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~!