Ошибка C ++, связанная с IXMLDOMNode * - PullRequest
0 голосов
/ 13 апреля 2011

У меня проблемы с компиляцией одного из наших устаревших компонентов COM. Я получаю следующую ошибку компилятора:

error C2501: 'IXMLDOMNode' : missing storage-class or type specifiers
error C2061: syntax error : identifier 'IXMLDOMNode'

В этой строке кода в файле .h:

IXMLDOMNode* CreateChildNodeOfItem(IXMLDOMNode* pNode, DOMNodeType nodeType, CString strName);

Я предположил, что IXMLDOMNode приходит из этой библиотеки:

#include <msxml.h>

Нужно ли устанавливать отсутствующий SDK?

Редактировать:

// stdafx.h : include file for standard system include files,
//  or project specific include files that are used frequently, but
//      are changed infrequently
//

#if !defined(AFX_STDAFX_H__84FB3EAC_AE73_4076_9DF6_E48B18DA7098__INCLUDED_)
#define AFX_STDAFX_H__84FB3EAC_AE73_4076_9DF6_E48B18DA7098__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define VC_EXTRALEAN        // Exclude rarely-used stuff from Windows headers

#include <afxwin.h>         // MFC core and standard components
#include <afxext.h>         // MFC extensions
#include <afxdisp.h>        // MFC Automation classes
#include <afxdtctl.h>       // MFC support for Internet Explorer 4 Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>         // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT

#include <atlbase.h>
#include <msxml.h>

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__84FB3EAC_AE73_4076_9DF6_E48B18DA7098__INCLUDED_)

Ответы [ 2 ]

3 голосов
/ 13 апреля 2011

Вы должны показать больше контекста.Возможно, вам следует квалифицироваться

MSXML::IXMLDOMDocument

См. Также: http://support.microsoft.com/kb/301939 для несовместимости платформ

1 голос
/ 14 апреля 2011

Я изменил способ включения msxml, и, похоже, он исправил ошибки компилятора. Я изменил:

#include <msxml.h>

до

#import <msxml.dll> raw_interfaces_only
using namespace MSXML; 
...