bonjour à tous,

Me voici avec un problème que je n'arrive pas a solutionner même en farfouillant dans le forum :

Je cherche à executer une fonction dans une DLL C++ a partir de Delphi.

j'ai d'abord crée une DLL en Delphi et je l'ai appelé de puis mon prog, pour le debug, et ça marche nickel.

ensuite je mets la DLL que l'on me livre et la, impossible de me connecter au fonctions de la DLL, la DLL se charge bien mais l'assignation des fonction par GetProcAdress ne marche pas.

a force de chercher, j'ai fait un Tdump et voilà le résultat : bizarre.....

(j'ai mis les trois point pour pas vous embéter avec toutes les fonctions exporter)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Display of File toto_h.dll
 
...
EXPORT ord:0004='?conTH@@YAHPAD000PAH00000@Z'
...
EXPORT ord:0007='?resTH@@YAHPAD000PAH00000@Z'
le nom des fonction que je cherche sont bien resTH et conTH mais la c'est bizarre tous ces caractères avant et aprés non

dans "dependency Walker " il faut que je clique sur "undecorate C++ fonction"

pour voir alors :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
int conTH(char *,char *,char *,char *,int *,char *,char *,char *,char *,char *)
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
int resTH(char *,char *,char *,char *,int *,char *,char *,char *,char *,char *)
ça ca correspond bien à ce que je veux ..

j'ai l'impression que mon problème vient de là . qu'en pensez vous ???

Pour plus d'info voici le code de mon prog :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ResTHInDLL: function(ID, DP, OPR: Pchar; DHr: PChar;out  CodeRetour: PInteger;out Quad: Pchar; Host, User, Pass, Db: Pchar): Integer; cdecl;
et l'association via GetProcAdress :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
      ResTHinDLL := GetProcAddress(hDLLHandle, ResTH);
 
      if not assigned(ResTHinDLL) then
        begin
          mess := 'resTH introuvable dans la DLL';
        end;
la déclaration de la fonction dans la DLL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
__declspec(dllimport) int resTH(char *, char *,char *,char *,int *,char *,char *,char *,char *,char *);