【发布时间】:2018-05-18 00:31:04
【问题描述】:
我的任务是编写一个 VB.NET 库来与一个 VB6 应用程序进行交互。此 VB6 应用程序提供了一些非托管 COM DLL。
我创建了互操作类型(通过使用 tlbimp)并将它们作为引用添加到我的 VB.NET 项目中。
嗯,还有一个旧的 VB6 项目(库)存在,它也引用了(本机)COM DLL,我们称它们为
COM1.dll、COM2.dll 和 COM3.dll。
这个旧项目有一个名为 claMod 的“类模块”,它正在执行以下操作:
Option Explicit
Public Property Set GlobalProp(oObj As claClass1)
Set COM1.MyPointer = oObj
Set COM2.MyPointer = oObj
End Property
其中claClass1 是COM3 中的一个类,COM1.MyPointer 和COM2.MyPointer 的类型为System.IntPtr。
我的问题是:如何在不声明相应对象(COM1 和 COM2 的实例)的情况下设置这两个指针?其次,如何在我的新 VB.NET 库中做同样的事情?
【问题讨论】:
-
它们是引用而不是指针,MyPointer 属性属于与 claClass1 兼容的类型。在您的 VB6 示例中,COM1/2 必须在某处实例化...
-
@AlexK。必须在某个地方实例化,是的,但是通过将类的 Instancing 属性设置为 GlobalMultiUse,类会在运行时自动实例化。