描述:
1.环境: 主要是一个custom的MTS组件,代码如下:
IDL片段:
import "msxml2.idl";
import "oaidl.idl";
import "ocidl.idl";
...
interface IGenerator : IUnknown{
[helpstring("method GetDOM")] HRESULT GetDOM(
[in,string]const OLECHAR*
xml,[out]IXMLDOMDocument2** pDoc);
};
...
程序实现片段:
STDMETHODIMP CGenerator::GetDOM(const OLECHAR *xml,
IXMLDOMDocument2 **pDoc){
HRESULT hr=CoCreateInstance(
CLSID_DOMDocument,
NULL,
CLSCTX_ALL,
IID_IXMLDOMDocument2,(void**)pDoc);
VARIANT_BOOL isSuc;
hr=(*pDoc)->loadXML(W2BSTR(xml),&isSuc);
return S_OK;
}
2. 测试
在Console程序中调试,如下:
#include <msxml2.h>
.......
CoInitialize(NULL);
IGenerator* pGenerator=NULL;
HRESULT hr=CoCreateInstance(
CLSID_Generator,
NULL,
CLSCTX_ALL,
IID_IGenerator,
(void**)&pGenerator);
IXMLDOMDocument2* pDoc=NULL;
OLECHAR* xml=OLESTR("<xml><Good>kdksdksd</Goods></xml>");
hr=pGenerator->GetDOM(xml,&pDoc);
IXMLDOMElement* pElement=NULL;
/********************************
* 错误在此!!! *
* ge_documentElement失败 *
********************************/
hr=pDoc->get_documentElement(&pElement);
if(SUCCEEDED(hr){
BSTR temp;
hr=pElement->get_xml(&temp);
USES_CONVERSTION;
cout << W2A(temp) << endl;
pElement->Release();
pElement=NULL;
}
pDoc->Release();
pDoc=NULL;
CoUninitialize();
3. 问题
hr=pDoc->get_documentElement(&pElement);
该语句报告"内存分配错误"......
为啥啊???????
特急,特急,特急,特急,特急,特急