我在旧式VB6应用程序中引用VB6 (msxml6.dll)。无论我使用DOMDocument40还是DOMDocument60,我仍然可以看到msxml4.dll与msxml6.dll一起使用。然而,除了解析一个小配置之外,我在项目中找不到任何其他应该使用的东西。
为什么我会看到msxml4.dll,因为它没有被项目引用?VB6用msxml4做什么吗?
发布于 2018-08-03 11:17:53
在其COM实现中,MSXML6似乎是MSXML4的一个新版本,而不仅仅是一个“营销”版本号。
看看OLEView中的IDL你可以看到.以下是一些例子。
MSXML4:
// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: msxml4.dll
[
uuid(F5078F18-C551-11D3-89B9-0000F81FE221),
version(4.0),
helpstring("Microsoft XML, v4.0")
]
library MSXML2
{
...
}
[
odl,
uuid(2933BF80-7B36-11D2-B20E-00C04F983E60),
helpstring("Core DOM node interface"),
dual,
nonextensible,
oleautomation
]
interface IXMLDOMNode : IDispatch {
...
}MSXML6:
// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: msxml6.dll
[
uuid(F5078F18-C551-11D3-89B9-0000F81FE221),
version(6.0),
helpstring("Microsoft XML, v6.0")
]
library MSXML2
{
...
}
[
odl,
uuid(2933BF80-7B36-11D2-B20E-00C04F983E60),
helpstring("Core DOM node interface"),
dual,
nonextensible,
oleautomation
]
interface IXMLDOMNode : IDispatch {
...
}这些只是很短的样本。
具体来说,您可以看到库本身的UUID和接口是相同的。这意味着VB6能够使用任何一个DLL中的这些项。
如果您需要强制它使用MSXML6,那么我认为您需要更新项目的VBP文件中的版本号。
如果您的项目引用了MSXML4,您应该会看到如下一行:
Reference=*\G{F5078F18-C551-11D3-89B9-0000F81FE221}#4.0#0#..\..\..\Windows\SysWow64\msxml4.dll#Microsoft XML, v4.0相反,你想要的是这样一条线:
Reference=*\G{F5078F18-C551-11D3-89B9-0000F81FE221}#6.0#0#..\..\..\WINDOWS\System32\msxml6.dll#Microsoft XML, v6.0UUID是一样的..。但是版本号(#6.0)是不同的。
https://stackoverflow.com/questions/51639975
复制相似问题