Я пытаюсь использовать VirtualBox COM API (VBoxC.dll) из C #. Я побежал
tlbimp VirtualBox.tlb
против typelib, включенного в VirtualBox SDK. Ссылка на выходные сборки сборки в порядке, но во время выполнения я получаю SafeArrayTypeMispatchException
(«Указанный массив не соответствует ожидаемому типу») всякий раз, когда я пытаюсь получить доступ к свойствам, возвращающим массивы.
Я вижу, например, что IVirtualBox.get_Machines()
определяется как
[return: MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_DISPATCH)]
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime), DispId(0x60020009)]
public virtual extern IMachine[] get_Machines();
Как мне правильно получить этот звонок к маршалу?