2023-03-06 19:46:51 发布人:hao333 阅读( 8485)
装了windows7,并安装了vs2005,其他工程没有问题,但是构建某个工程时却出现了error:can tfindmsxml dll在system32目录下一找才发现原来确实没有这个文件,从虚拟机的xp里拷了个过来,嘿嘿竟然编过了。
安装了Windows7,安装了vs2005。其他项目没有问题,但是在建项目的时候出现。
错误:找不到msxml.dll
在system32目录中查找,我发现这个文件不存在。我是从虚拟机的xp里面抄的,呵呵居然编译了。
Windows 7还不是很成熟。虽然比vista好很多,但是要超越xp还有很多细节需要改进。
Microsoft MSxml用于解析xml文件。在xp下使用时,只要编译# import msxml.dll就可以顺利通过。
将项目移植到Vista时,会遇到找不到msxml.dll的错误。
最初msxml.dll在Vista上升级到msxml6.dll,
把#进口msxml.dll改成#进口msxml6.dll就行了。
相应的using命名空间MSXML可以改为using命名空间MSXML2进行编译。
那么Vista中编译好的可执行文件不能在XP中使用吗?
网上有个办法:
#if (_WIN32_WINNT=0x0600)
#进口msxml6.dll
#否则
#进口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最基本的特性:保持二进制兼容,即使组件版本升级了,也可以在新的环境下运行旧版本的程序,因为新版本的组件肯定会保持旧版本的接口。
相关阅读
RelatedReading猜你喜欢
Guessyoulike