结构体作为形参传入。需要定义与C++一样的结构体传入。建议直接拷贝。同时使用特性StructLayoutAttribute(LayoutKind.Sequentil)声明结构体的内存布局。知识补充记录:在C/C++中,struct类型的内存是按照成员声明顺序分布,默认是按照占用内存最大的成员进行内存对齐。在.Net中,可以使用特性LayoutKind.Sequentil,控制成员的布局,也可以根据数据类型使用StructLayoutAttribute中的特性进行设置,例如字符的编码格式CharSet CharSet; 数据字段对齐 int Pack;声明结构体的绝对大小 int Size。
[StructLayout (LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]
public struct OpenParam
{
public int W;
public int H;
public int X;
public int Y;
public int S;
public uint F;
}