passage de pointeurs entre appli delphi et DLL c++
bonjour,
j essaie d utiliser une dll que je devellope en c++ a partir d une appli existante en delphi et j ai un pb qui me *tracasse* depuis pas mal de temps.
cela se passe ds les fonctions qui travaillent sur des pointeurs. les objets pointés semblent se modifier en cours d execution. voila un petit resume de la chose:
ds l appli delphi:
Code:
1 2 3 4 5 6 7 8
|
var
ref : Pointer;
begin
ref:=CreateTimer(index);
ResetTimer(ref);
end; |
les prototypes sont:
Code:
1 2 3
|
CreateTimer:=Function(index : Integer) : Pointer cdelc;
ResetTimer:=Function(instance : Pointer) : Integer cdelc; |
ds la dll:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
void * CreateTimer(int _index) {
Timer * result=new Timer(_index);
return ((void *) (result));
}
int ResetTimer(void * instance) {
writeOnConsole(((Timer *) (instance))->getIndex());
writeOnConsole(((Timer *) (instance))->getIndex());
writeOnConsole(((Timer *) (instance))->getIndex());
writeOnConsole(((Timer *) (instance))->getIndex());
return 0;
} |
et ce qui se passe c est qu en general, entre les differents affichages de l index ds la DLL celui ci change. Dans mes tests, je l initialise a 44, et il passe la fois d apres a 2 puis a 1... (qqsoit la valeur initiale, il passe toujours a 2 puis a 1).
je ne sais pas si c etait tres clair.. mais c est la premiere fois que j essaie de faire passer des pointeurs d une dll a l exterieur.. et peut etre que qqn aura une solution...
NB: j ai aussi tente d utiliser des Timer * au lieu de void * ds les prototypes des fonctions de la DLL et il y a tjrs les memes pbs..