如何使用COM互操作使用VB6的结构体?

3

以下是情景描述:

我有一个VB6项目。它包含一个方法,该方法通过引用接收类型为variant的参数。

Function GetFilledInfo(data As Variant)

这个方法会用一个结构体来填充接收到的参数。在我的VB6项目中,这个结构体定义如下:

Public Type DATASTRUCTMAIN
   structChild As DATASTRUCTCHILD
End Type

Public Type DATASTRUCTCHILD
   m_bComputeRanges As Long
End Type

我有一个C#程序,通过引用由VB6项目生成的ActiveX dll调用此方法。
我想在我的C#程序中声明在VB6中定义的结构,并希望使用VB6方法填充它。
我该怎么做?
提前感谢。
1个回答

2
我注意到您只传递了一个 Long(除非您为简洁而截断了这些结构定义)。在这种情况下,只需更改 VB6,使其公开返回 Long 的函数即可!
如果您有一个真正的结构...
将结构定义移动到 VB6 项目中的公共类中。然后,结构定义将通过 COM 对于任何引用您的 VB6 项目的客户端公开可用。
希望您能在 C# 项目中使用它,并且能够声明结构的实例。您的 C# 项目中的 Project References 中有对 VB6 组件的引用,对吗?不太熟悉 .Net COM 互操作性,所以不确定。
如果在 C# 项目中声明结构实例时遇到任何问题,您可以将 VB6 结构更改为类? 显然,在 COM 互操作性中,结构可能会出现问题

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接