Pointeur de fonction

Larwin Messages postés 44 Date d'inscription dimanche 25 novembre 2001 Statut Membre Dernière intervention 24 juillet 2010 - 7 déc. 2003 à 13:56
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 8 déc. 2003 à 14:48
salut tout le monde
bon j'suis un gros débutant c/c++ et je fais mes premiers pas depuis 2, 3 jours...
j'ai deja un petit probleme :)
je m'explique :
j'ai fait un premier bout de code... on ne se moque pas ;)
le but du jeu, créer un pointeur vers une fonction.
ca c'est bon.

#include

int Affiche()
{
cout << "Bonjour" << "\n";
return 0;
}

int main()
{
Affiche(); // appel de la fonction Affiche
int(*addr_)(void); // pointeur sur fonction
addr_=&Affiche; // addr_ pointe sur la fct Affiche

long int valueof_;
valueof_=(long)addr_;

cout << "Adresse de la fonction : " << addr_ << "\n";
cout << "Valeur de l'adresse : " << valueof_ << "\n";
addr_();
return 0;
}

maintenant, ce que je souhaite faire, c'est connaissant l'adresse d'une fonction d'un module dans vb avec addressOf
dont le type retourné est un Long, spécifier par exemple :
addr_=ma_valeur_long;
afin d'executer ma function dans mon .exe vb depuis un .exe en c/c++.
mais ca, ca ne marche pas, en fait ce que j'aimerais savoir c'est comment spécifié (en dur) l'adresse d'un pointeur de fonction ?
je sais pas trop si j'ai été bien clair...
en vous remerciant par avance :)

Nico

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 déc. 2003 à 15:41
addressOf de VB te donne adresse d'une fonction au standard __stdcall, faudra donc que ton pointeur de fonction soit declare comme tel.
Maintenant savoir si tu peux appeler une fonction vb grace a un son adresse, sera delicat car l'adresse est invalide dans TON processus. Ce n'est pas comme pour une DLL car celle ci est mappee dans l'espace memoire de ton processus donc l'adresse est valide alors que celle de vb ne le sera pas.
BruNews, ciao...
0
Larwin Messages postés 44 Date d'inscription dimanche 25 novembre 2001 Statut Membre Dernière intervention 24 juillet 2010
8 déc. 2003 à 14:39
ok Brunews... merci beaucoup...
je fais ca avec une dll, une fonction au standard __stdcall qui recoit comme argument un pointeur vers une fonction au standard _stdcall... :) un truc comme ca :
void _stdcall MyCallBack( void (_stdcall * CallBack)(int) )
ca marche c cool :) thankx a lot...
petite question tout de meme sur les dlls...
c'est normal que les dll que je compile avec presque rien comme code font environ 200Ko ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 déc. 2003 à 14:48
Une dll C ? tu ne compilerais pas en DEBUG par hasard ?
Compile en RELEASE et avec 3 mini exports ne devrait pas exceder 30 Ko, regle aussi sur single thread.
BruNews, ciao...
0
Rejoignez-nous