(re)bonjour a tous,
je ne suis pas tres a l'aise en C++ et je voudrais developpez une DLL a laquelle on passe une fonction de "Callback" qui renverrait des nombres
voici mon code:


fichier.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
#define DllExp __declspec( dllexport )
 
typedef void (*CALLBACKPROC)(long);
 
#ifdef __cplusplus 
extern "C" { 
#endif 
 
DllExp bool InitDLL(CALLBACKPROC);
#ifdef __cplusplus 
} 
#endif
fichier.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
DllExp bool InitDLL(CALLBACKPROC cb)
{
	CALLBACKPROC callback;
 
	callback = cb;
	callback(20);
	callback(255);
	callback(11000);
	callback(2004);
 
	return true;
}
Mon probleme est que les nombres que je recupere dans mon programme de test ne correspondent pas du tout a ceux-ci ...
Mon programme utilisant la DLL est en Delphi :

en voici un extrait:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
function InitDLL(cb: TCallBack):Boolean; cdecl; external 'madll.dll'
[...]
TCallback = procedure (s: Integer);
 
procedure WriteLine(s: Integer);
begin
   Form1.Memo.Lines.Add('Callback: '+inttostr(s));
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
   InitDLL(WriteLine);
end;
Voila mon programme ne plante pas il me renvoie simplement de mauvaises valeurs (toujours les memes d'ailleurs...) j'ai bidouillé tout l'aprem sans succes

merci