Larwin
Messages postés44Date d'inscriptiondimanche 25 novembre 2001StatutMembreDernière intervention24 juillet 2010
-
7 déc. 2003 à 13:56
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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.
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 :)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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...
Larwin
Messages postés44Date d'inscriptiondimanche 25 novembre 2001StatutMembreDernière intervention24 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 ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 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...