Visual Basic 6.0无法在Windows 7上编译Collection

时间:2016-02-09 17:13:59

标签: windows vb6

我将尽量简短:我们在Visual Basic 6.0中编写了代码,我试图在Windows 7 64位计算机上编译。 (以前这是在一台旧的XP计算机上编译的。)大多数代码似乎都能正确编译,但是某些具有属性的代码(如NewEnum)并不尊重VB属性。这是一个例子:

VB6方法如下所示:

Public Property Get NewEnum() As IUnknown
Attribute NewEnum.VB_UserMemId = -4
Attribute NewEnum.VB_MemberFlags = "40"
    'this property allows you to enumerate
    'this collection with the For...Each syntax
    Set NewEnum = mCol.[_NewEnum]
End Property

这是使用Class Builder Utility时创建的默认枚举器。

但是,编译代码时不遵循Attribute元素。使用OLE View程序,它显示属性被忽略。

XP计算机生成以下代码段:

[id(0xfffffffc), propget, hidden]
HRESULT NewEnum([out, retval] IUnknown** );

但Windows 7计算机生成:

[id(0x68030000), propget]
HRESULT NewEnum([out, retval] IUnknown** );

我试图将Visual Basic应用程序设置为在XP(Service Pack 3)兼容模式下运行,但这没有帮助。

由于我们的应用程序的大小和复杂性,我们目前无法将它从VB6移植到.NET,我们需要将其编译。有谁知道如何正确配置VB6,以便正确编译集合?

0 个答案:

没有答案