所有人。我知道微软已经给出了这样一个关于IXMLDOMDocument的保存方法的例子:http://msdn.microsoft.com/en-us/library/windows/desktop/dd874226(v=vs.85).aspx
但是,当我将save的参数改为像CString或char*这样的变量而不是常量时,我在save方法中得到了类似这样的异常:"Unhandled exception in VisualADS.exe: 0xC0000005: Access Violation“。异常位置为:
#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 Studio6中的MFC MBCS项目,这是我的代码thx!
CString strFilePathName = ar.GetFile()->GetFilePath();
CComBSTR ccbsFilePathName(strFilePathName);
CComVariant ccvFilePathName(ccbsFilePathName);
hr = pXMLDoc->save(ccvFilePathName);发布于 2014-01-02 04:06:50
传递给IXMLDOMDocument::save的变量必须带有BSTR。如果您的项目是UNICODE项目,那么您很有可能不需要进行转换,也没有理由使用奇怪的尝试来崩溃。
如果是在MBCS项目中,情况就不同了:在OLE/COM中使用文件名之前,必须以某种方式将文件名从MBCS转换为UNICODE。我建议使用CComBSTR类来完成此操作
CString strFilePathName;
[...]
CComBSTR ccbsFilePathName( strFilePathName );
CComVariant ccvFilePathName( ccbsFilePathName );
hr = pXMLDoc->save( ccvFilePathName );https://stackoverflow.com/questions/20868948
复制相似问题