Appeler une DLL C en Csharp

Signaler
Messages postés
3
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
26 octobre 2010
-
Messages postés
3
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
26 octobre 2010
-
Bonjour à tous,
Je cherche a appeler une DLL en C depuis Csharp.

J'ai 2 fonctions a appeler

  __declspec(dllexport) void fonction1 (char* filepath);

  __declspec(dllexport)char* Fonction2 (char* hexstrin);


Et voici comment je les appele en Csharp

[DllImport("madll.dll")]
public unsafe static extern char* fonction1([MarshalAs(UnmanagedType.LPStr)] string hexstrin);

[DllImport("madll.dll", CharSet = CharSet.Ansi)]
        //string GetDir(StringBuilder filepath); 
        public static extern void fonction2(string filepath);




Malheuresement le compilateur me remvoie toujours une erreur du type " un appel a la fonction "fonction1.." a déséquilibré la pile...

Savez vous d'ou vient le probleme?

Votre aide me serait très precieuse :-)

Merci

4 réponses

Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
16
Peut-être parce que tu as inversé les types de retour de tes 2 fonctions?
Messages postés
3
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
26 octobre 2010

Je pense aussi que c est un probleme de type mais je vois pas ce qu il faut mettre, as tu une idée?
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
16
As tu lu ce que j'ai écrit? le mot important était "inversé". En C ta fonction1 ne retourne rien, et en C# tu spécifie qu'elle retourne un char*, et tu fais l'inverse pour ta fonction2
Messages postés
3
Date d'inscription
jeudi 14 décembre 2006
Statut
Membre
Dernière intervention
26 octobre 2010

Merci pour ta réponse en fait j ai trouvé la solution a mon problème en suivant ces examples
http://www.drdobbs.com/184406285;jsessionid=354EG0ECRTYW3QE1GHOSKHWATMY32JVN

:P