簡単な質問ですが、正解は見つかりません。C構造体に128バイトのchar配列が必要です。私はこれを64ビットWindowsで実行しています。次を使用して、これをc#にマーシャリングしたいと思います。
Cコード:
typedef struct s_parameterStuct
{
int count;
char name[ 128 ];
} parameterStruct;
そしてc#コード:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public class parameterStuct
{
public int count;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
public char[] name;
}
charはc#では2バイトなので、SizeConstは128または256である必要があります。どちらも正常に機能しているように見えますが、正しいのは1つだけです。