|
分類:[C#]
いつも助けていただいてるホエホエです。 検索でいろいろ調べたんですが、どうしても 分からず投稿させていただきました。
タイトルにもある通り、DLLのAPIとの受渡に 構造体の中にネストして固定長の構造体配列を 宣言したいのですが開発環境が.NET1.1のため、 『fixed』が使用できずマーシャリングでどうにか しようとしてますがどうしても上手くいきません。
宣言(例) [StructLayout(LayoutKind.Sequential,Pack=1)] public struct Info { public ushort wA; public ushort wB; public uint nC; public double dD; };
[StructLayout(LayoutKind.Sequential,Pack=1)] public struct Data { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public Info[] InfoData; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 520)] public ushort[] DataA; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 520)] public ushort[] DataB; };
とすると下記例外が発生 『'System.ArgumentException' のハンドルされていない例外が Test.exe で発生しました。
追加情報 : 型 Test.Data はアンマネージ構造体として集成できません。 有効なサイズ、またはオフセットの計算ができません。』
どうか良い方法を教えてください、お願いします。
|