在C ++中,您可以使用__declspec( align( # ) )
声明符来控制用户定义数据的对齐方式。如何为C#做到这一点。我的dll中有两个写在Assembler上的程序。过程的参数(两个数组)应该在16个字节上对齐。对于C ++,它可以正常工作。
我刚刚使用了声明
__declspec( align( 16 ) )
double a[2]={10.2,10.6};
答案 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字段确定目标对象的数据字段的内存对齐方式。