在C++中,您可以使用__declspec( align( # ) )声明符来控制用户定义数据的对齐方式.如何为C#做到这一点.我的dll中有两个写在Assembler上的程序.过程的参数(两个数组)应该在16个字节上对齐.对于C++,它工作正常.
我刚刚使用了声明
__declspec( align( 16 ) )
double a[2]={10.2,10.6};
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找托管到非托管互操作(在基于C#/.NET和基于C/C++ /汇编器的软件之间传输数据),您将使用StructLayout属性和FieldOffset属性的组合:
[StructLayout(LayoutKind.Explicit, Pack = 16)]
public class MyDataClass {
[FieldOffset(0)]
double[] a;
}
Run Code Online (Sandbox Code Playgroud)
根据MSDN:
System.Runtime.InteropServices.StructLayoutAttribute.Pack字段确定目标对象的数据字段的内存对齐方式.
http://support.microsoft.com/kb/922785
| 归档时间: |
|
| 查看次数: |
1203 次 |
| 最近记录: |