hallo,
ich versuche gerade eine C++ Dll in C# zu verwenden. Das meiste klappt auch, nur habe ich eine Funktion, die als Parameter einen unsigned char* erwartet.
Bei meinen bisherigen Versuchen diese Funktion zu verwenden bekomme ich Fehler, dass "Die Typensignatur der Methode ist nicht Interop-kompatibel."
Versucht habe ich es mit ref byte[] und ref char[] als Parameter (in einem C++ Beispielprogramm wurde der Funktion ein unsigned char-Array übergeben).
Ich habe im Netz nichts hilfreiches gefunden, vielleicht kann mir hier jemand sagen wie es richtig geht?
In C++ Dll (Header):
BOOLEAN STDCALL readData(UCHAR* buffer);
meine erfolglose Umsetzung:
[DllImport("AtUsbHid.dll")]
public static extern bool readData(ref char[] buf);
bzw.
public static extern bool readData(ref byte[] buf);
EDIT: Formatierung
gruß & thx
sth_Weird
Linux is for free...if your time is worth nothing
Fluchen ist die einzige Sprache, die jeder Programmierer perfekt beherrscht
++++++++++++++++++++~+
Hallo,
gibt es in C# nicht ein uchar?
mfg.
markus111
EDIT: doch nicht
Nur so ne Idee: Wenn deine Daten ein String ist, versuchs mal mit nem StringBuilder
public static extern bool readData(ref StringBuilder buf);
Hatte mal was ähnliches, da hat's so funktioniert... War allerdings eine in Delphi programmierte DLL auf die ich da zugegriffen hatte...
gelöst...
so hats nun funktioniert:
[DllImport("AtUsbHid.dll")]
public static extern bool writeData([In, MarshalAs(UnmanagedType.LPArray)] byte[] buf);
[DllImport("AtUsbHid.dll")]
public static extern bool readData([Out, MarshalAs(UnmanagedType.LPArray)] byte[] buf);
gruß
sth_Weird
Linux is for free...if your time is worth nothing
Fluchen ist die einzige Sprache, die jeder Programmierer perfekt beherrscht
++++++++++++++++++++~+