C ++では、__declspec( align( # ) )
宣言子を使用してユーザー定義データの配置を制御できます。C#でこれを行うにはどうすればよいですか。dllのアセンブラに2つのプロシージャが記述されています。プロシージャ(2つの配列)の引数は、16バイトに揃える必要があります。C ++の場合、正常に動作します。
宣言を使用しました
__declspec( align( 16 ) )
double a[2]={10.2,10.6};
管理対象から非管理対象への相互運用(C#/.NET ベースのソフトウェアと C/C++/アセンブラー ベースのソフトウェアの間でデータを送信する)StructLayout
を探している場合は、属性と属性の組み合わせを使用しFieldOffset
ます。
[StructLayout(LayoutKind.Explicit, Pack = 16)]
public class MyDataClass {
[FieldOffset(0)]
double[] a;
}
MSDNによると:
System.Runtime.InteropServices.StructLayoutAttribute.Pack フィールドは、ターゲット オブジェクトのデータ フィールドのメモリ配置を決定します。