2 Stimmen

Wie man ein Array von Structs marshaliert - (.Net/C# => C++)

Haftungsausschluss: Nahezu Null mit Rangierkonzepten

Ich habe eine Struktur B, die eine Zeichenkette und ein Array von Strukturen C enthält. Ich muss dies über die riesige Interop-Kluft an einen COM-C++-Verbraucher senden.
Was sind die richtigen Attribute, die ich brauche, um meine Strukturdefinition zu schmücken?

[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;
}

bearbeiten: @Andrew Im Grunde ist das das Problem meines Freundes. Er hat diese Sache, die in .Net funktioniert - Er macht einige Automagic, um die .tlb/.tlh erstellt zu haben, die er dann in der C++-Welt verwenden kann. Das Problem ist, er kann nicht reparieren die Größe des Arrays.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X