老男人百科 > 百科 > 正文

为什么安装msxml后找不到(xml解析错误找不到根元素位置)

2023-06-17 20:58:29 阅读( 7838)

装了windows7,并安装了vs2005,其他工程没有问题,但是构建某个工程时却出现了error:can'tfindmsxml.dll在system32目录下一找才发现原来确实没有这个文件,从虚拟机的xp里拷了个过来,嘿嘿竟然编过了。

安装了Windows7,安装了vs2005。别的项目没问题,建一个项目就出现了。

error: can't find msxml.dll

在system32目录下搜索了一下,发现这个文件真的不存在。我是从虚拟机的xp里面拷贝过来的,其实是编译的。

Windows 7还不是很成熟。虽然比vista好很多,但是要超越xp还有很多细节需要改进。

Microsoft MSxml用于解析xml文件。在xp下使用时,只要用# import msxml.dll编译就可以顺利通过。

当移植项目到Vista,你会遇到找不到msxml.dll的错误。

Originally, msxml.dll was upgraded to msxml6.dll in prospect.

Just change # imported from msxml.dll to # imported from msxml6.dll.

The corresponding use of namespace MSXML is changed to use namespace MSXML2 to compile.

那么Vista下编译好的可执行文件在XP下就不能用了吗?

网上有个方法:

#if (_WIN32_WINNT=0x0600)

#import msxml6.dll

#else

#import msxml.dll

#endif

这种做法没有必要。

以下是一位网友给出的解释:

COM组件的使用方式不同,开发环境和运行环境也不同。开发环境需要最新的SDK来支持最新的操作系统,所以使用# import msxml6.dll,但是到了运行环境

程序不会直接加载到msxml6.dll,而是通过CoCreateInstance加载,并传递PROGID或CLSID。系统将在注册表中找到相应的dll文件。如果它在vista下运行,

系统会帮你加载msxml6.dll,在xp环境下,系统会帮你加载msxml.dll。但是程序不能使用IXmlDocument6,因为这个版本在XP环境下不被msxml.dll支持。

这个特性是COM最基本的特性:保持二进制兼容,即使组件版本升级,也可以在新环境下运行旧版本的程序,因为新版本的组件肯定会保留旧版本的接口。

猜你喜欢

Guessyoulike
男人不能碰这几种女人(男人四十)

男人不能碰这几种女人(男人四十)

hao333 8235次阅读2023-02-22 17:53
囧!男人下面为什么有异味(囧!男人下面为什么有异味)
吃什么中药能避孕(喝什么中药可以避孕)

吃什么中药能避孕(喝什么中药可以避孕)

hao333 3730次阅读2023-02-23 14:33
如何延长夫妻房事时间(如何延长夫妻房事时间)
专题页