Bonjour à tous,

Je dispose d'une dll codé en C.
Celle-ci contient une fonction qui est censé me retourner un tableau de char.

Voici comment se présent la fonction dans le .h de la dll :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
        unsigned short Exchange (unsigned short usNumID,
                        char*          pcResp,
                        unsigned long* pulSizeResp)
Voici maintenant, ce que j'ai fais dans mon application c# :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
        [DllImport("cardw32.dll"]
        public static extern ushort Exchange(ushort usNumID,
                                    string       pcResp, 
                                    ref ulong   pulSizeResp);
Voici comment je l'utilise :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
        static void Main(string[] args)
        {
            ulong status = 0;
            ulong sizeResp = 256;
            ushort num = 3;
            StringBuilder respStr2 = new StringBuilder((int)sizeResp);
 
            status = Exchange(num,
                                respStr,
                                ref sizeResp);
 
            Console.WriteLine("Echange - status = " + status.ToString() + " sizeResp = " + sizeResp.ToString());
            Console.WriteLine("String = " + respStr);
Malheureusement pour moi ca ne fonctionne pas, je récupère bien une longueur (pulSizeResp), mais rien dans ma string.
Je n'ai pas réussi à lui passer un char[] (marche pas avec "ref")
J'ai déja cherché sur le site, mais rien de concluant chez moi ... (stringBuilder NOK, liens pages Morpheus NOK)

Si quelqu'un à une idée je suis prenneur.

Merci d'avance.