Я пытаюсь вызвать неуправляемый код с помощью C#.C# вызов неуправляемого кода
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# код
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
Я имею другую функцию, которая возвращает целочисленное значение просто отлично, я предполагаю, что это связано с LPBYTE себя. Цените любую помощь.
Получил работу, блестящий. Спасибо. – unmanageddude 2010-12-09 00:30:53