Pointeur sur fonction envoyé par dll

MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 - 12 déc. 2003 à 20:14
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 - 13 déc. 2003 à 15:44
Voila ce que j'ai fais mais ca ne marche pas :
Dll :
#include <windows.h>

BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
return TRUE;
}

extern "C" __declspec(dllexport)

COOL(void (*Test))
{
Test; // c'est ici que la fonction
// delexe doit etre executé !
}

//Voici ce qu'il y a dans l'exe :

#include <windows.h>

#pragma comment(lib, "blueteam.lib")
//DECLARATION DE LA VARIABLE DU DLL//
extern "C" __declspec(dllimport) COOL(void (*Test));

void (*Test)(void); // pointeur vers la fonction

void Testeuh(void) // la fonction ki sera pointé
{
Mana->Bot[3]->Act(ACT_RUN,DIR_RIGHT);

}

et dans lexe dans la fonction boucle il y a :
Test = Testeuh; // le pointeur pointe ^^
COOL (*Test ); // on envoie laddresse a la dll

Mais rien ne se passe .. Pourquoi?
Merci beaucoup !!

6 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
12 déc. 2003 à 20:37
j'ai pas test mais moi je ferai plutot
Test =&Testeuh; // on lui file l'adresse de la fct
0
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
12 déc. 2003 à 20:40
Merci davoir essayer mais le nom d'une fonction est deja un pointeur vers l'addresse de la fonction :(
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
12 déc. 2003 à 20:44
merci pour cette info(lol,je vien de comprendre d'ou venais l'overflow d'un de mes prog!)

a ce moment la, je ferai(mais ce n'est qu'une supposition)

COOL (Test);
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
12 déc. 2003 à 23:16
ou simplement COOL(Testeuh)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
12 déc. 2003 à 23:40
Merci mais rien de tout ca ^^ en fait c ma fonction dll qui merdait :
il faut ceci pour init un pointeur vers une fonction :
void COOL(void (*Test)(void))
{

Test();

}
Merci encore !!
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
13 déc. 2003 à 15:44
super !
je te conseillerais quand même de passer par un typedef pour simplifier la syntaxe : typedef int (fn) (int, int);

et un petit exemple

#include
using namespace std;

//définition du pointeur de fonction
typedef int (pfn) (int, int);
int ajout(int x, int y){return x+y;}
int soustrait(int x, int y){return x-y;}

void lance(pfn pf){cout << pf(5,2)<< endl;}

int main(int argc, char* argv[], char* env[])
{ lance(ajout);
lance(soustrait);
return 0; }
0
Rejoignez-nous