Bonjour,
Premièrement je m'excuse pour mon titre pas très explicite en vue de mon soucis, mais je ne voyais pas quel titre j'aurais pu mettre précisément.
Je vous expose mon soucis, je suis en train d'écrire un programme qui vas utiliser des fonction d'une dll écrite en C++, une des fonction de cette dll prend en argument un pointeur de typer char* et la valeur de la variable sera assigner par la dll.
J'ai essayer de cette maniere:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 [Dllimport("madll.dll")] private extern static void Fonction(string var); public static Main() { string var=string.Empty; Fonction(var); Console.WriteLine("var => "+var); }
Mais "var" est toujours vide ...
J'ai essayer ensuite en écrivant du code unsafe:
Et la je reçois bien une chaine de caractères, mais du genre "???l" alors que je devrais recevoir une vraie chaine de caractères.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 [Dllimport("madll.dll")] private unsafe extern static void fonction(char *var); public unsafe static void Main() { char *var = stackalloc char[256]; //c'est la taille nécessaire à la dll fonction(var); string val=string.empty; for(int i = 0; i < 256; i++) val=val+var[i]; Console.WriteLine("val => "+val); }
Où me suis-je tromper ?
Merci par avance pour vos aides.
Partager