У меня есть API, написанный на C ++, и я пытаюсь использовать его с взаимодействием в C# Windows формах. У меня возникают трудности с определением эквивалентной C# структуры. Вот структура C ++:
typedef struct
{
char SerNo[LENGTH];
HANDLE dev;
} myDevice;
Редактировать:
Благодаря комментариям первый пункт решен. Вот текущий статус C#:
public unsafe struct sdrplay_api_DeviceT
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 64)]
string SerNo;
public IntPtr dev;
}
Однако я не пытаюсь получить РУЧКУ. Поэтому я думаю, что сейчас я расширю код дальше:
В исходном коде C ++ есть следующая функция:
GetDevices (myDevice * devs);
и в коде C# я сделал это:
public unsafe static extern GetDevices([In, Out] myDevice[] devs);
Теперь я использую следующий код:
myDevice[] devs = new myDevice[6];
var error = GetDevices(devs);
Если я Посмотрите на разработчиков в Visual Studio. Я вижу SerNo (devs [0] .SerNo) правильно, но «дескриптор всегда 0;
Я пробовал IntPtr, байт, но я в растерянности. Спасибо, Том