AddDllDirectory () ist ein sehr neuer Zusatz zum winapi. Es ist nur garantiert in Windows 8 verfügbar sein, erfordert es ein Update, KB2533623. Behalten Sie dies im Hinterkopf, wenn Sie Ihre Produktanforderungen auswählen.
Es ist in mehr als einer Hinsicht ungewöhnlich, es folgt nicht dem normalen Muster für Winapi-Funktionen, die eine Zeichenkette akzeptieren. Dies macht die Funktion in zwei Versionen verfügbar, in der ANSI-Version mit angehängtem A und in der Unicode-Version mit angehängtem W. AddDllDirectory () hat keinen angehängten Buchstaben, nur die Unicode-Version existiert. Es ist mir nicht klar, ob das beabsichtigt war oder ein Versehen, mit hohen Wahrscheinlichkeiten. Die Funktionsdeklaration fehlt in den Windows 8 SDK-Headern, was sehr ungewöhnlich ist.
Ihre ursprüngliche Deklaration ist fehlgeschlagen, weil Sie die Unicode-Version aufgerufen haben, aber der Pinvoke-Marshaller eine ANSI-Zeichenfolge übergeben hat. Sie haben wahrscheinlich Glück gehabt, weil die Zeichenkette eine ungerade Anzahl von Zeichen mit genügend glücklichen Nullen hatte, um keine AccessViolation zu verursachen.
Das Verwenden der CharSet-Eigenschaft in der [DllImport] -Deklaration ist erforderlich, damit der pinvoke-Marshaller eine Unicode-Zeichenfolge übergibt.
Sie müssen angeben, dass Unicode im DllImport-Attribut verwendet wird,
%Vor%