首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSXML6引用似乎仍然在VB6应用程序中使用MSXML4

MSXML6引用似乎仍然在VB6应用程序中使用MSXML4
EN

Stack Overflow用户
提问于 2018-08-01 18:24:40
回答 1查看 991关注 0票数 2

我在旧式VB6应用程序中引用VB6 (msxml6.dll)。无论我使用DOMDocument40还是DOMDocument60,我仍然可以看到msxml4.dll与msxml6.dll一起使用。然而,除了解析一个小配置之外,我在项目中找不到任何其他应该使用的东西。

为什么我会看到msxml4.dll,因为它没有被项目引用?VB6用msxml4做什么吗?

EN

回答 1

Stack Overflow用户

发布于 2018-08-03 11:17:53

在其COM实现中,MSXML6似乎是MSXML4的一个新版本,而不仅仅是一个“营销”版本号。

看看OLEView中的IDL你可以看到.以下是一些例子。

MSXML4:

代码语言:javascript
复制
// 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:

代码语言:javascript
复制
// 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,您应该会看到如下一行:

代码语言:javascript
复制
Reference=*\G{F5078F18-C551-11D3-89B9-0000F81FE221}#4.0#0#..\..\..\Windows\SysWow64\msxml4.dll#Microsoft XML, v4.0

相反,你想要的是这样一条线:

代码语言:javascript
复制
Reference=*\G{F5078F18-C551-11D3-89B9-0000F81FE221}#6.0#0#..\..\..\WINDOWS\System32\msxml6.dll#Microsoft XML, v6.0

UUID是一样的..。但是版本号(#6.0)是不同的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51639975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档