代码如下:
IXMLDOMDocumentPtr docPtr;
HRESULT hr = CoInitialize(NULL);
hr = docPtr.CreateInstance(_uuidof(MSXML2::DOMDocument40));
//hr返回0
_variant_t varXml(strXmlName);
_variant_t varOut((bool)TRUE);
varOut = docPtr->load(varXml);//这儿返回错误值
if(!((bool)varOut)) //进入错误处理为什么98下返回不正常值呢?

解决方案 »

  1.   

    不知道98下面有没有需要的文件?Implementation: msxml3.dll, msxml2.lib
    Header and IDL files: msxml2.h, msxml2.idl
      

  2.   

    有,我安装了msxml4现在问题是如果我这么调用,
    varOut = docPtr->load("d:\\a.xml");就正确如果我把d:\\a.xml传给varXml,在调用docPtr->load(varXml)就返回False
      

  3.   

    看看内存块中varXml中的值。可能跟它获取字符串的时候得值不正确有关。
      

  4.   

    varXml的值是"d:\\a.xml" VT_BSTR
    后面应该是_variant_t的类型
    不知道这个是否影响
      

  5.   

    哈哈,跟我的问题一样,强烈建议将IE升级到IE6以上,好像5.5也可以,不敢保证,还要最好打补丁到SP4
      

  6.   

    to csdnzhu:
       你用的是不是win98阿?98有没有补丁
      

  7.   

    没有98系统:(,不过既然用load("d:\\a.xml");正确,用load(varXml);不正确,那么应该是varXml的问题。你看看字符串的结尾有没有\0。如果展开成为load("d:\\a.xml" VT_BSTR)应该就有问题了
      

  8.   

    to pomelowu:
    展开还真是load("d:\\a.xml" VT_BSTR),不过,奇怪的是在2000下这种是没有错误的,这涉及98系统缺少什么吗?
      

  9.   

    to pomelowu:
    非常感谢你热心的帮忙,我再试试