Bonjour
Je tien a m excuser si cette question a deja ete posee mais j'ai lu quelques post sans trouver de reponse.
J'ai une fonction native c dont le prototype est le suivant :
bool TraduireTexte(LPSTR Text_Input, LPSTR Text_Output)
Le probleme c'est que je ne comprend pas tres bien comment marche le marchalling et que je ne connait pas la taille finale de Text_Output.
Si je declare la fonction comme suit, j ai une erreur accessviolationexception:
1 2 3 4 5
|
[DllImport("madll.dll")]
public static extern bool TraduireTexte(
string Text_Input,
IntPtr Text_Output) |
Pour le moment j utilise le code suivant pour fonctionner mais c 'est pas tres propre
1 2 3 4 5 6 7 8 9 10
|
DllImport("madll.dll")]
public static extern bool TraduireTexte(
string Text_Input,
byte[] Text_Output)
.......
byte[] l_TextOutput = new byte[1024];/ je sais que le resultat sera < a 1024
TraduireTexte("blablabla",TextOutput );
MessageBox.Show(Regex.Replace(ASCIIEncoding.GetString(TextOutput ),@"\0","")); |
Si quelqu un peut m expliquer comment je peux envoyer un pointeur a mafonction , le transformer en String et ensuite liberer la memoire, merci d'avance.
Partager