Получение неправильных значений байтов из C ++ в C # - PullRequest
0 голосов
/ 24 апреля 2019

Я создаю плагин для Unity и посмотрел на этот ответ метод чтения байтовых данных из C ++ в C #: Передача байтового массива из неуправляемой dll C ++ в C # unity

Код C ++:

char DAQ_API* Read()
    {
         char Buffer[30];
         PopulateArray(Buffer);
         return Buffer;
    }
int DAQ_API FreeMemory(char* arrayPtr) 
    {
        if (arrayPtr != nullptr) {
            delete[] arrayPtr;
        }
        return 0;
    }

Код C #:

[DllImport("DAQ")]
private static extern IntPtr Read();
[DllImport("DAQ")]
public static extern int FreeMemory(IntPtr ptr);

В цикле обновления:

IntPtr ptr = Read();
byte[] packet = new byte[30];
Marshal.Copy(ptr, packet, 0, 30);
FreeMemory(ptr);

Размер байтового массива равен 30, а первые 8 байтов верны , а остальные выглядят как ненужные данные:

0 240 0 89 86 23 7 9 240 67 189 31 0 0 0 0 96 211 95 0 0 0 0 0 224 210 95 0 0 0 

Что происходит, что приводит к неправильным данным для остальной части массива?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...