Я пытаюсь построить структуру в C # для передачи в неуправляемый C ++, мне было интересно, какой тип переменной можно использовать для массива unichar
в моей структуре, и что он должен маршалировать как.
Я уже понял это для unsigned char array
C / C ++
typedef struct _foo {
void *fileId;
unsigned char fileName[15];
} foo;
C #
[StructLayout(LayoutKind.Sequential)]
public struct foo
{
public IntPtr fileId;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 15)]
public string fileName;
}
Так что, если у меня есть следующее в C ++
typedef struct _foo {
void *fileId;
unichar fileName[15]; // UTF-16LE
} foo;
Какую правильную структуру использовать в C #?