j'ai une méthode que je veux importer à partir d'une DLL et il a une signature:DllImport et char *
BOOL GetDriveLetter(OUT char* DriveLetter)
J'ai essayé
[DllImport("mydll.dll")]
public static extern bool GetDriveLetter(byte[] DriveLetter);
et
[DllImport("mydll.dll")]
public static extern bool GetDriveLetter(StringBuilder DriveLetter);
mais aucun n'a renvoyé quoi que ce soit dans la variable DriveLetter.
Que signifie le UnmanagedType.I1? – Malfist
@Malfist, La valeur I1 indique au CLR de marshaler la valeur sous la forme d'un entier de 1 octet. Il était en fait incorrect dans cet exemple car I4 est la valeur correcte (mise à jour un peu plus tôt). Quant à savoir pourquoi consulter cette entrée de blog, j'ai écrit sur les valeurs de marshalling bool: http://blogs.msdn.com/jaredpar/archive/2008/10/14/pinvoke-and-bool-or-should-i-say-bool .aspx – JaredPar
Quand je le fais I4, je reçois MarshalDirectiveException – Malfist