私はアプリケーションをC++からC#に変換しており、構造体の読み込みを処理する適切な方法について質問があります。私が使用したときに、私はCのC#にCのDLLから構造体を構造体に変換しようとしています。これdllからCへC構造体を変換するにはどうすればいいですか?
typedef struct card_info
{
ushort r;
ushort s;
enum_a a;
usinged long ul;
ushort n;
ushort* b;
ushort id;
} CARD_INFO;
のように見えます[StructLayout(LayoutKind.Sequentaial)]は、配列のサイズは、C#で20バイトです。しかし、私のC++コードを見てみると24バイトです。私はこのように私のC#を変更:
[StructLayout(LayoutKind.Explicit)]
public struct CardInfo
{
[FieldOffset(0) public ushort r;
[FieldOffset(2) public ushort s;
[FieldOffset(4) public EnumA a;
[FieldOffset(8) public ushort ul;
[FieldOffset(12) public ushort n;
[FieldOffset(16) public UInt32 b;
[FieldOffset(20) public ushort id;
}
これはコンパイルするようだが、私は、これはこれを行うについては移動するための正しい方法である確信していません。これが正しかったか、よりよい方法があるかどうか私に教えてください。
おかげ