c# - 为什么在获取 COM 函数的地址时发生异常?

标签 c# com interop vtable typelib

我通过加载类型库 (TLB) 并使用 ITypeLibITypeInfo 迭代类型来获取 COM 函数的地址。 调用 ITypeInfo 的 AddressOfMember 函数后,我遇到了以下异常:

System.Runtime.InteropServices.COMException (0x800288BD): Wrong module kind for the operation. (Exception from HRESULT: 0x800288BD (TYPE_E_BADMODULEKIND)) at System.Runtime.InteropServices.ComTypes.ITypeInfo.AddressOfMember(Int32 memid, INVOKEKIND invKind, IntPtr& ppv).

如何摆脱这个异常?

最佳答案

我不确定,以前没有做过这种事情,但你说你正在加载tlb文件?可能是addressofmember需要加载com对象的dll,我以为tlb文件只是接口(interface)的描述,addressofmember不会有任何代码加载。

关于c# - 为什么在获取 COM 函数的地址时发生异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2825074/

相关文章:

.NET Word Interop 适用于 Windows 7 但不适用于 Server 2008

c# - 在 C# 运行时加载 dll

c# - ASP.NET Core JSON-RPC

python - 如何从 Windows API 文档中使用的接口(interface)名称获取 COM 类的 GUID?

vba - 如何在Word的VBA中使用COM?

c# - COM Interop,RPC 服务器在 c# 中不可用

具有键值的 C# foreach 循环

c# - 通过gridview显示数据

c# - setter 和支持字段中的 .NET 逻辑

c# - 获取合并单元格的高度和宽度以放置图片。