【发布时间】:2009-07-14 15:04:51
【问题描述】:
我正在尝试使用 C# 中的 VirtualBox COM API (VBoxC.dll)。我跑了
tlbimp VirtualBox.tlb
针对 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();
如何正确调用 marshall?
【问题讨论】:
标签: c# com interop virtualbox