我将尽量简短:我们在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,以便正确编译集合?