002
29.03.2004, 16:13 Uhr
Grandmasta
|
Dnake schon mal, dass Du Dich damit befasst...
Hier die gesamte Funktion: BOOL CXMLFile::LoadFile(const CString/*[in]*/ &strPathName, IXMLDOMDocument/*[out]*/ **doc) { IXMLDOMDocument *document = NULL; IXMLDOMParseError* parseError = NULL; //IXMLDOMElement* element = NULL; HRESULT hr; BSTR bstr = NULL; VARIANT_BOOL varOkay;
//Init com hr = CoInitialize(NULL); if (FAILED(hr)) { return FALSE; }
// Create instance for XML document hr = CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, IID_IXMLDOMDocument, (LPVOID*)&document); if (!document) { return FALSE; }
// Load and parse xml docuemnt document->put_async(VARIANT_FALSE); bstr = strPathName.AllocSysString(); document->load (_variant_t(bstr),&varOkay); SysFreeString(bstr);
// Error occured if (!varOkay) { long line, linePos; BSTR reason = NULL; document->get_parseError(&parseError); parseError->get_errorCode(&hr); parseError->get_line(&line); parseError->get_linepos(&linePos); parseError->get_reason(&reason); CString strMsg; strMsg.Format(_T("Error 0x%.8X on line %d, position %d\r\nReason: %s"), hr, line, linePos, CString(reason)); MessageBox(NULL,strMsg, _T("Error Loading XML"), MB_ICONWARNING); parseError->Release (); document->Release (); SysFreeString(reason); // Failed return FALSE; }
// If we have previous document open , free it first if ( *doc) (*doc)->Release(); // assign the new document to current one *doc = document; /**/ // Sucess return TRUE;
}
Die .cpp und die .lib sind eingebunden.
ich konnte herausfinden, dass es eventuell an der extern Direktive liegt, und zwar wird in der msxml2.h das interface als extern "C"{..} angegeben. Ist das ein möglicher grund? |