免責事項: マーシャリングの概念がゼロに近い..
私は文字列 + 構造体 C の配列を含む構造体 B を持っています。これを巨大な相互運用キャズムを越えて COM - C++ コンシューマに送信する必要があります。
構造体定義を装飾するために必要な属性の正しいセットは何ですか?
[ComVisible (true)]
[StructLayout(LayoutKind.Sequential)]
public struct A
{
public string strA
public B b;
}
[ComVisible (true)]
[StructLayout(LayoutKind.Sequential)]
public struct B
{
public int Count;
[MarshalAs(UnmanagedType.LPArray, ArraySubType=UnmanagedType.Struct, SizeParamIndex=0)]
public C [] c;
}
[ComVisible (true)]
[StructLayout(LayoutKind.Sequential)]
public struct C
{
public string strVar;
}
編集:@Andrew基本的にこれは私の友人の問題です。彼はこれを .Net で動作させています。彼は、C++ 領域で使用できる .tlb/.tlh を作成するためにいくつかの自動魔法を実行します。問題は、配列のサイズを修正できないことです。