Interface 在VB6中引用COM库(在VS2013中创建)时查看可用函数

Interface 在VB6中引用COM库(在VS2013中创建)时查看可用函数,interface,com,vb6,class-library,Interface,Com,Vb6,Class Library,我在VS2013中创建了一个类库,向其中添加了一个COM类,并添加了一些函数。我用VB6编译并把它带到另一台计算机上,这样它就可以注册并引用(.tlb) 现在,我正在使用CreateObject调用COM库中的函数,如下所示: Dim comObj As Object comObj = CreateObject("comLibrary.test") Console.WriteLine(comObj.AddNumbers(5,5)) 我是否有可能在intellisense中看到我的comObj中

我在VS2013中创建了一个类库,向其中添加了一个COM类,并添加了一些函数。我用VB6编译并把它带到另一台计算机上,这样它就可以注册并引用(.tlb)

现在,我正在使用CreateObject调用COM库中的函数,如下所示:

Dim comObj As Object
comObj = CreateObject("comLibrary.test")
Console.WriteLine(comObj.AddNumbers(5,5))
我是否有可能在intellisense中看到我的comObj中可用的函数。我想我可以通过一个叫做_test的接口,在使用微软的COM类时自动创建

  Dim comObj As Object
您正在使用CreateObject()进行后期绑定。VB6 IDE不知道在运行时可以创建什么类型的对象及其成员的外观。因此,它无法显示任何IntelliSense信息

改为使用早期绑定,这是VB6程序中的常见选择:

  Dim comObj As New Test
这需要为.NET项目添加对.tlb文件的引用,即类型库。它告诉VB6 IDE类型名称及其成员的名称。您可能需要调整[ComVisible].NET类上的属性,以便它支持早期绑定,只有在您没有显式编写接口时才需要。您可以使用[ClassInterface(ClassInterfaceType.AutoDual)]。请注意声明接口

您正在使用CreateObject()进行后期绑定。VB6 IDE不知道在运行时可以创建什么类型的对象及其成员的外观。因此,它无法显示任何IntelliSense信息

改为使用早期绑定,这是VB6程序中的常见选择:

  Dim comObj As New Test

这需要为.NET项目添加对.tlb文件的引用,即类型库。它告诉VB6 IDE类型名称及其成员的名称。您可能需要调整[ComVisible].NET类上的属性,以便它支持早期绑定,只有在您没有显式编写接口时才需要。您可以使用[ClassInterface(ClassInterfaceType.AutoDual)]。请支持声明接口。

当您从VB6应用程序引用.tlb时,早期绑定会起作用吗?另外,我假设我必须使用RegAsm在VB6机器上正确设置注册表项?当您从VB6应用程序引用.tlb时,早期绑定是否会起作用?另外,我假设我必须使用RegAsm来设置VB6机器上的注册表项,对吗?感谢您的出色响应!我是否必须使用RegAsm在VB6计算机上注册.tlb?我之前遇到一个错误:429:活动X组件无法创建对象。可能是因为我使用了64位文件夹中的RegAsm。谢谢您的回复!我是否必须使用RegAsm在VB6计算机上注册.tlb?我之前遇到一个错误:429:活动X组件无法创建对象。可能是因为我使用了64位文件夹中的RegAsm。