以下は、c++ から c# に変換しようとしているコードです。
struct PSB {
short type_of_psb;
short call_dependent;
int32 del_psb_status;
uint32 seq_number[2];
int32 uma_psb_status;
short psb_reserved[6];
}
以前、以下の構造を書きました。
[StructLayout(LayoutKind.Explicit)]
public struct PSB
{
[FieldOffset(0)]
public short type_of_psb;
[FieldOffset(2)]
public short call_dependent;
[FieldOffset(4)]
public int del_psb_status;
[FieldOffset(8)]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public uint32 seq_number; // Here is the problem
[FieldOffset(16)]
public int uma_psb_status;
[FieldOffset(20)]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
public short[] psb_reserved;
}
しかし、上記の C# コードは機能しません。問題はメンバseq_numberにあります
だから私はそれを
public ulong seq_number
からuint seq_number
、上記のマーシャラス属性を削除しました。
現在、レガシーコードで動作しています。どうしてか分かりません ?配列として like を定義した場合の問題は何ですか?