Implementation d'une fonction callback pour l'appel à une DLL

Signaler
Messages postés
1
Date d'inscription
vendredi 22 décembre 2006
Statut
Membre
Dernière intervention
22 décembre 2006
-
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
-
Hi all!

J'utilise visual c++ 6.0.
J'ai une DLL client dont je connais seulement les noms de fonctions visualisés sous "Dependency walker". Je veux implementer des fonctions callaback permettant l'utilisation de cette DLL.
J'ai trouvé sous MSDN : http://msdn2.microsoft.com/en-us/library/843s5s5x.aspx une façon de le faire via le langage c++,  mais il me semble que le namesapce System n'est pas connu par visual 6.0!!

qq'un peut m'aider?
Merci!

3 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
typedef void (__stdcall *fonction)(int, int);

fonction test = (fonction)GetProcAddress(LoadLibrary("ladll.dll"), "nomdelafonction");

test(5, 5);

C++ (@++)<!--
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
En passent, il faut au moin connaitre quelque trucs de la fonction pour utiliser cette méthode:



typedef void (__stdcall *fonction)(int, int);
C'est la valeur de retoure de la fonction



typedef void (__stdcall *fonction)(int, int);
C'est la façon d'apeller la fonction. Généralement, les fonctions de l'API sont toutes en __stdcall



typedef void (__stdcall *fonction)(int, int);
Le nombre et le type de paramètre que prend la fonction.

Il faut au moin savoir ça sinon, des problèmes peuvent survenirs.
C++ (@++)<!--
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
21
System est la classe de base du framework dotNet, donc vc++6 ne peut pas la connaitre directement. de plus elle s'utilise avec du code managé (/cli) qui n'a rien à voir avec du c++ natif.
Tu peut utiliser a la ligne de commande :
link -dump -exports uneDll.dll
ou
DUMPBIN.exe /EXPORTS uneDll.dll
Avec d'autres options de lignes de commande pour avoir toutes les infos utiles sur les DLL.
faire : DUMPBIN /h
A plus.