bonjour...

Je dispose d'une DLL win32 écrite en Pascal. Je souhaite utiliser cette DLL dans un programme C. Après avoir chargé ma DLL, j'arrive de manière dynamique à utiliser quelques fonctions de la DLL mais pas toutes. En effet certaine d'entre elles ont un prototype particulier et me renvoie des paramètres incompatible avec le C.

J'ai par exemple la fonction suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
//définition du prototype de la fonction
  typedef (*FCTX1) (char *monNom);
 
// Déclaration du pointeur
  FCTX1 Ptr1;
 
//chargement de la fonction "fonctionIdentification"
  Ptr1 = (FCTX1)GetProcAddress(ModId, "fonctionIdentification") //ModId contient l'adresse de la DLL
 
//utilisation de la fonction "fonctionIdentification"
  Ptr1 ("jayceBlaster");
Pour ce type de fonction je n'ai aucun problème mais la ou ca coince c lorsque j'ai des fonction qui n'attendent aucun paramètre d'entrée et me renvoie un string qui est un type nom reconnu en C.

je n'arrive meme pas a définir le prototype de ma fonction dans le C. Je serai tenté d'écrire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
//définition du prototype de la fonction
  typedef string (*FCTX2) ();
 
// Déclaration du pointeur
  FCTX2 Ptr2;
 
//chargement de la fonction "heure"
  Ptr2 = (FCTX2)GetProcAddress(ModId, "heure") //ModId contient l'adresse de la DLL
 
//utilisation de la fonction "heure"
  maChaine=Ptr2 (); // maChaine== string
Mais ceci ne marche pas bien entendu d'une part car le type string est inconnu en C et d'autre par car le compilateur n'accepte pas la définition de cette fonction qui n'attend aucun paramètre d'entrée..

J'espere que je suis claire dans mes explications et que quelqu'un pourra me venir en aide??

merci...