142536a 发表于 2015-5-19 10:12:39

XP工程移植Win7上找不到msxml.dll的错误

  解析XML文件使用到了微软的msxml ,在xp下使用的时候,只要#import 编译就可以顺利通过,
  当把工程移植到Vista上的时候就会遇到找不到 msxml.dll的错误。
  原来在Vista上msxml.dll升级为msxml6.dll,
  只要把#import 改成#import
  相应using namespace MSXML改成using namespace MSXML2编译即可通过
  那么Vista下编译后的可执行文件是不是不可以在XP下使用呢?
  网上的有种方法是:
#if (_WIN32_WINNT >= 0x0600)
#import
#else
#import
#endif
  这种做法是没有必要的
  下面是一位网友给出的解释:
  COM组件的使用方式,开发环境和运行环境是不同的。开发环境要使用最新的SDK才能支持最新的操作系统,所以要用#import msxml6.dll,但是到了运行环境,程序并不会直接加载msxml6.dll,而是通过CoCreateInstance来加载的,传递的是PROGID或者CLSID,系统会在注册表中找到对应的dll文件,如果运行在vista下,系统会帮你加载msxml6.dll,如果在xp环境下,系统帮你加载msxml.dll。但是程序不能使用IXmlDocument6,因为在XP环境下,msxml.dll并不支持这个版本。
  这个特征是COM最基本的特征:保持二进制兼容,即使组件版本升级,也能在新环境下运行旧版的程序,因为新版组件一定会保留旧版组件的接口。
  
  原文:http://sites.securepaynet.net/
  
  
  
页: [1]
查看完整版本: XP工程移植Win7上找不到msxml.dll的错误