Ich versuche, nicht verwalteten Code mit C# aufzurufen.C# ruft nicht verwalteten Code auf
extern "C" __declspec(dllexport) LPBYTE DataReceived(LPBYTE signals)
{
LPBYTE test;
*(WORD*)(test) = 0x0C;
*(WORD*)(test + 2) = 0x1000;
return test;
// I even tried returning 0x00 only; and I was still getting the exception
}
C# -Code
internal sealed class Test
{
[DllImport("testlib.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
public static extern byte[] DataReceived(byte[] signals);
}
// signals is byte[] too
byte[] foo = Test.DataReceived(signals);
//exception that occurs
A first chance exception of type 'System.Runtime.InteropServices.MarshalDirectiveException
ich eine andere Funktion habe, die nur gut einen int-Wert zurückgibt, denke ich, dass es im Zusammenhang selbst LPBYTE. Schätze jede Hilfe.
Habe es funktioniert, brilliant. Vielen Dank. – unmanageddude