I am trying to use the VirtualBox COM API (VBoxC.dll) from C#. I ran
tlbimp VirtualBox.tlb
against the typelib included in the VirtualBox SDK. Referencing the output assembly builds OK but at runtime I get a SafeArrayTypeMispatchException
("Specificed array was not of the expected type") whenever I try to access properties that return arrays.
I can see, for example, that IVirtualBox.get_Machines()
is defined as
[return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_DISPATCH)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime), DispId(0x60020009)]
public virtual extern IMachine[] get_Machines();
How can I get this call to marshall correctly?