Преобразование структуры C в C#? - PullRequest
0 голосов
/ 16 января 2020

У меня есть 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, байт, но я в растерянности. Спасибо, Том

...