Member 13434694 Ответов: 1

Как преобразовать структуру C++ в структуру C#


Привет, я пытаюсь преобразовать структуру C++ в структуру C#. Используя эти структуры, я буду использовать параметр из структуры, чтобы использовать его в функции.

С++
typedef unsigned char uint8;
typedef int sint32;
typedef struct BY_BITMAP
{
    sint32 biWidth;      
    sint32 biHeight;     
    sint32 biBitCount;   
    sint32 bfSize;       
    sint32 BytesPerLine; 
    uint8 **ScanLine;    
    uint8 *buffer;       
}BY_BITMAP;


В основной программе я бы использовал их для кодирования функции

public void SavePic()
{
 ByBitmap[] sources = new ByBitmap[2];
            sources[0] = new ByBitmap();
            sources[0].buffer = null;
            sources[0].ScanLine = null;
            sources[1] = new ByBitmap();
            sources[1].buffer = null;
            sources[1].ScanLine = null;
ScannerIDnative.SavePicToStream(ref sources,IDcardMode)
}


Структура, которую я сделал досентской работой, может ли кто-нибудь помочь?

Что я уже пробовал:

public struct ByBitmap
   {

       public int biWidth;
       public int biHeight;
       public int biBitCount;
       public int bfSize;
       public int BytesPerLine;
       public byte[] ScanLine;
       public byte[] buffer;
   }

1 Ответов

Рейтинг:
2

KarstenK

Типы int вашей структуры должны работать правильно, но для байта[] вы должны выделить буфер в время выполнения CSharp Для этого вы должны знать необходимый размер этих значений и сделать этот вызов раньше.

Другой способ-получить байтовые буферы из C++ и сделать копию в C#.

Взгляните на мой статьи и ее код особенно на функцию buildBuffer и ее использование.