如何在没有接口的情况下绑定COM事件

Jus*_*ony 5 c# vb6 late-binding .net-3.5 oleview

我需要延迟绑定到3.5 C#应用程序中的第三方VB6 COM对象(以避免我们当前拥有的版本依赖项).由于某些错误在我们尝试正常使用时导致错误,因此提供的dll在大多数非后期方式中都不可使用.目前,我们正在使用一个自定义的VB6包装器,它使得VERY特定于版本,但是我发现我可以使用后期绑定来访问属性和方法.现在,我试图延迟绑定到事件,但是我读到的所有内容都说我需要从COM包装器的接口继承来创建所需的事件接收器.这是一篇这样的文章.

所以,我的问题是,是否有可能在编译时没有引用dll的情况下执行后期绑定事件处理?

UPDATE

以下是我对VB6包装器的错误(仍在积极更新).

  • 在OleViewer中,我得到了

无法反编译所选项目错误加载类型库/ DLL.TYPE_E_CANTLOADLIBRARY($ 80029C4A)

  • 在Visual Studio中,我得到:

无法确定COM引用"3rdPartyDLL"的依赖项.加载类型库/ DLL时出错.(来自HRESULT的异常:0x80029C4A(TYPE_E_CANTLOADLIBRARY))

Car*_*ten 0

该问题很可能是由您使用的平台引起的。我昨天刚刚遇到了类似的问题。当您后期绑定x86 /x64 COM 类型库时,请确保将项目平台设置为x86 / x64 。

这同样适用于oleview. 使用x86/x64版本查看x86/x64类型库。(如果您使用的是 x64 系统,则可能需要安装 x64 Windows SDK 才能获得正确的可执行文件)。