C#控制数据的对齐

时间:2012-04-24 20:30:06

标签: c# interop

在C ++中,您可以使用__declspec( align( # ) )声明符来控制用户定义数据的对齐方式。如何为C#做到这一点。我的dll中有两个写在Assembler上的程序。过程的参数(两个数组)应该在16个字节上对齐。对于C ++,它可以正常工作。

我刚刚使用了声明

__declspec( align( 16 ) )
double a[2]={10.2,10.6};

1 个答案:

答案 0 :(得分:8)

如果您正在寻找托管到非托管的互操作(在基于C#/。NET和基于C / C ++ /汇编程序的软件之间传输数据),您将使用{的组合{3}}属性和StructLayout属性:

[StructLayout(LayoutKind.Explicit, Pack = 16)]
public class MyDataClass {
    [FieldOffset(0)]
    double[] a;
}

根据MSDN:

  

System.Runtime.InteropServices.StructLayoutAttribute.Pack字段确定目标对象的数据字段的内存对齐方式。

FieldOffset