J'essaye d'appeler le code non managé utilisant C#.C# appelant le code non managé
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
}
code C#
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
J'ai une autre fonction qui renvoie une valeur int très bien, je suppose que c'est lié à lui-même LPBYTE. Appréciez toute aide.
Ça a marché, génial. Je vous remercie. – unmanageddude