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