Vb.net .NET类作为COM DLL中的回调对象

Vb.net .NET类作为COM DLL中的回调对象,vb.net,com,Vb.net,Com,我是Windows编程和VB.net的新手。我们试图做的是在现有的第三方COM dll中调用函数。此函数需要回调参数,其类型是dll中定义的接口 在我们的VB.net应用程序中,我们添加了dll作为COM引用,并创建了一个在dll中实现接口的类。然后,我们发送该类型的对象作为回调参数。这很好。但是,当我们运行应用程序时,会收到一个错误,说明程序无法将对象从现有类型强制转换为接口类型 我怀疑有一个简单的解决办法,但到目前为止,我为找到解决办法所做的努力还不够。如果有人能给我指出正确的方向,我将非常

我是Windows编程和VB.net的新手。我们试图做的是在现有的第三方COM dll中调用函数。此函数需要回调参数,其类型是dll中定义的接口

在我们的VB.net应用程序中,我们添加了dll作为COM引用,并创建了一个在dll中实现接口的类。然后,我们发送该类型的对象作为回调参数。这很好。但是,当我们运行应用程序时,会收到一个错误,说明程序无法将对象从现有类型强制转换为接口类型

我怀疑有一个简单的解决办法,但到目前为止,我为找到解决办法所做的努力还不够。如果有人能给我指出正确的方向,我将非常感激


非常感谢。

我建议您检查您正在实现的COM接口是否具有registerd代理/存根或相应的类型库(tlb)。您可以通过在注册表中搜索接口的IID(这是与此接口关联的guid)来检查这一点:

代理/存根案例:

HKEY_CLASSES_ROOT
   Interface
      {iid}
         (Default) = ICustomInterfaceName
         ProxyStubClsid32 = {clsid}
类型库案例:

HKEY_CLASSES_ROOT\TypeLib\{F37C8060-4AD5-101B-B826-00DD01103DE1}
HKEY_CLASSES_ROOT\TypeLib\{F37C8060-4AD5-101B-B826-00DD01103DE1}\2.0 = Automation Hello 2.0 Type Library.
HKEY_CLASSES_ROOT\TypeLib\{F37C8060-4AD5-101B-B826-00DD01103DE1}\2.0\HELPDIR =
; U.S. English.
HKEY_CLASSES_ROOT\TypeLib\{F37C8060-4AD5-101B-B826-00DD01103DE1}\2.0\9\win32 = hello.tlb
将{F37C8060-4AD5-101B-B826-00DD01103DE1}替换为与类型库关联的guid


如果类型库已注册。检查其文件是否存在于您的PC上

我建议您检查您正在实现的COM接口是否具有registerd代理/存根或相应的类型库(tlb)。您可以通过在注册表中搜索接口的IID(这是与此接口关联的guid)来检查这一点:

代理/存根案例:

HKEY_CLASSES_ROOT
   Interface
      {iid}
         (Default) = ICustomInterfaceName
         ProxyStubClsid32 = {clsid}
类型库案例:

HKEY_CLASSES_ROOT\TypeLib\{F37C8060-4AD5-101B-B826-00DD01103DE1}
HKEY_CLASSES_ROOT\TypeLib\{F37C8060-4AD5-101B-B826-00DD01103DE1}\2.0 = Automation Hello 2.0 Type Library.
HKEY_CLASSES_ROOT\TypeLib\{F37C8060-4AD5-101B-B826-00DD01103DE1}\2.0\HELPDIR =
; U.S. English.
HKEY_CLASSES_ROOT\TypeLib\{F37C8060-4AD5-101B-B826-00DD01103DE1}\2.0\9\win32 = hello.tlb
将{F37C8060-4AD5-101B-B826-00DD01103DE1}替换为与类型库关联的guid


如果类型库已注册。检查其文件是否存在于您的电脑上

您可以发布一些代码吗?也许这个问题:你能发布一些代码吗?也许这个问题: