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

cs_3asfoura Messages postés 1 Date d'inscription vendredi 22 décembre 2006 Statut Membre Dernière intervention 22 décembre 2006 - 22 déc. 2006 à 15:01
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 22 déc. 2006 à 16:16
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

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

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

test(5, 5);

C++ (@++)<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
22 déc. 2006 à 15:48
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++ (@++)<!--
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
22 déc. 2006 à 16:16
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.
0
Rejoignez-nous