3

这是场景:

我有一个 VB6 项目。它包含一个通过 ref 接收变体类型参数的方法。

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 方法来填充它。

我怎样才能做到这一点?

提前致谢。

4

1 回答 1

2

我不禁注意到您只传递了一个 Long (除非您为了简洁而截断了这些结构定义)。在这种情况下,只需更改 VB6,使其公开一个返回 Long 的函数!

如果你有一个真正的结构......

将结构定义移动到 VB6 项目中的公共类。然后结构定义将通过 COM 公开提供给任何引用您的 VB6 项目的客户。

希望您能够在您的 C# 项目中使用它,并且您将能够声明该结构的实例。您确实在 C# 项目的项目引用中引用了 VB6 组件,对吗?对 .Net COM 互操作不太熟悉,因此对此不确定。

如果您在 C# 项目中声明结构实例时遇到任何问题,您可以将 VB6 结构更改为类吗?显然结构在 COM 互操作中可能存在问题

于 2012-10-25T16:57:55.957 回答