Ich habe eine Methode, die ich aus einer DLL importieren möchten, und es hat eine Signatur von:DllImport und char *
BOOL GetDriveLetter(OUT char* DriveLetter)
I
[DllImport("mydll.dll")]
public static extern bool GetDriveLetter(byte[] DriveLetter);
und
[DllImport("mydll.dll")]
public static extern bool GetDriveLetter(StringBuilder DriveLetter);
versucht haben,
, aber keiner der Einträge in der DriveLetter-Variablen zurückgegeben.
Was bedeutet der UnmanagedType.I1? – Malfist
@Malfist, Der Wert I1 weist die CLR an, den Wert als eine 1-Byte-Ganzzahl zu speichern. Es war in diesem Beispiel tatsächlich falsch, da I4 der richtige Wert ist (vor ein paar Tagen aktualisiert). Um herauszufinden, warum diesen Blog-Eintrag ich auf Marshalling Bool Werte schrieb: http://blogs.msdn.com/jaredpar/archive/2008/10/14/pinvoke-and-bool-or-should-i-say-bool .aspx – JaredPar
Wenn ich es I4 mache, bekomme ich MarshalDirectiveException – Malfist