Ich versuche, die VirtualBox COM API (VBoxC.dll) von C# zu verwenden. Ich liefVirtualBox COM API von C#
tlbimp VirtualBox.tlb
gegen die Typelib in der VirtualBox SDK enthalten. Das Referenzieren der Ausgabeassembly erstellt OK, aber zur Laufzeit erhalte ich immer dann eine SafeArrayTypeMispatchException
("Spezifisches Array war nicht vom erwarteten Typ"), wenn ich versuche, auf Eigenschaften zuzugreifen, die Arrays zurückgeben. richtig
kann ich zum Beispiel sehe, dass IVirtualBox.get_Machines()
als
[return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_DISPATCH)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime), DispId(0x60020009)]
public virtual extern IMachine[] get_Machines();
definiert Wie kann ich diesen Anruf marshall bekommen?
IMachine ist kein IDispatch. Ich werde es von C++ ausgehend mit der IDL ausprobieren. –