gpt4 book ai didi

c# - 来自 C# 的 VirtualBox COM API

转载 作者:行者123 更新时间:2023-11-30 22:49:27 24 4
gpt4 key购买 nike

我正在尝试使用 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?

最佳答案

这是一个解释异常的链接:MSDN reference

您的问题点很可能是 SafeArraySubType,IMachine 是 IDispatch 吗?对于 IUnknown 等,VarEnum 中有更多选项。

不幸的是,您将不得不编辑您的 COM 库,超出 tlbimp 吐出的内容...

关于c# - 来自 C# 的 VirtualBox COM API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1126012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com