大家。我知道微软给出了一个关于IXMLDOMDocument的save方法的例子,如下所示: http://msdn.microsoft.com/en-us/library/windows/desktop/dd874226(v=vs.85).aspx
但是当我将save的参数更改为CString或char *等变量而不是常量时,我在save方法中得到了一个异常,如下所示: “VisualADS.exe中未处理的异常:0xC0000005:访问冲突。” 例外情况是:
#pragma implementation_key(76)
inline HRESULT MSXML2::IXMLDOMDocument::save ( const _variant_t & destination ) {
HRESULT _hr = raw_save(destination);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _hr;
}
这是Visual Studio 6中的MFC MBCS项目,这是我的代码,thx!
CString strFilePathName = ar.GetFile()->GetFilePath();
CComBSTR ccbsFilePathName(strFilePathName);
CComVariant ccvFilePathName(ccbsFilePathName);
hr = pXMLDoc->save(ccvFilePathName);
答案 0 :(得分:0)
您传递给IXMLDOMDocument::save
的变体必须带有BSTR
。如果您的项目是UNICODE项目,很有可能您无法进行任何转换,并且没有理由使用奇怪的尝试崩溃。
如果您在MBCS项目中,情况有所不同:在OLE / COM中使用之前,您必须以某种方式将文件名从MBCS转换为UNICODE。我建议使用CComBSTR
类
CString strFilePathName;
[...]
CComBSTR ccbsFilePathName( strFilePathName );
CComVariant ccvFilePathName( ccbsFilePathName );
hr = pXMLDoc->save( ccvFilePathName );