Bonjour
J'ai un petit probleme avec l'utilisation d'une DLL que j'ai ecrit moi meme en C.
Voila la declaration de ma fonction Cdans la DLL :
et voila la maniere dont j'utilise cette fonction dans mon programe Delphi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part DLLIMPORT void ma_procedure(char *name,char *clef);
J'optient une erreur : "EStackOverFlow" lors de lexecution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 procedure ma_procedure(name,clef : PChar);stdcall ;external 'DLL1.dll'; .... .... clef:=PChar(MaskEdit1.text); name:='mm.txt'; ma_procedure(name,clef );
J'ai debuger mon programe (OllyDBG) pour voir ce qui ce passe. La procedure ce deroule normalement et c'est qu'apres que la procedure se soit terminé qu'il y a cette erreur.
Comme j'ai douter que sa venait d'un probleme de memoir avec les parametres de la fonction, j'ai enlever les parametres (dans la DLL et l'exe) et l'erreur disparet.
J'ai essayer de passer les parametres de la procedure par valeur :
mais rien ne change .
Code : Sélectionner tout - Visualiser dans une fenêtre à part DLLIMPORT void ma_procedure(char name[200],char clef[100]);
Le probleme vient donc peut etre du fait qu'une foit que la procedure est terminee, les variable sont detruites, et ces variable appartienne au programe principal (je ne suis pas sure ).
J'ai trouver quelques solution pour la getion de la memoire mais avec des DLL ecrite en Delphi (BORLNDMM.DLL) mais je ne voit pas quoi faire pour mon probleme
Merci d'avance .
Partager