1
のenumフィールドを持つ構造体のために失敗します:元帥は、私は次のように定義されて、私は元帥にしようとしている構造体を持っているカスタムサイズ
enum BBB {BB1 =1, BB2 =2}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct Foo
{
[MarshalAs(UnmanagedType.I2)]
public BBB F1;
public int F2;
public short F3;
}
は元帥はこの列挙フィールド仕様を扱うことができないように思えるとスロー例外: は、アンマネージ構造としてマーシャリングすることはできません。意味のあるサイズまたはオフセットを計算することはできません。 [MarshalAs(UnmanagedType.I2)]を削除すると、マーシャリングは成功しますが、4バイトのサイズではないカスタムサイズフィールドとして列挙型フィールドをマーシャリングできるようにしたいと考えています。
誰もこの問題に遭遇しましたか?
働きのおかげディルク。 – dmg
私はF#で作業しているのですが、enum型のサイズを指定できないのはどういう意味ですか?type BBB = | BB1 = 1 | BB2 = 2? – dmg
@dmg:私はF#にあまり慣れていませんが、私の推測によれば、それはちょうど不可能です。すべての.NET言語が同じ機能をサポートしているわけではなく、ネイティブコードとの相互運用性(およびネイティブタイプにマーシャリングできる)は、F#の目標ではありませんでした(C#とは対照的です)。 –