«MSXML2» не имеет проблемы члена «IXMLDOMNode» в VC ++ 2010 - PullRequest
1 голос
/ 25 января 2011

Я пытаюсь скомпилировать унаследованный мной проект VC ++, использующий MSXML2.Это ATL .EXE проект.Заголовочный файл включает в себя следующее:

#include "msxml2.h"

using namespace MSXML2;

Определения препроцессора включают __USE_MSXML2_NAMESPACE__, который я добавил в проект, поскольку без него пространство имен MSXML2 было неопределенным.При попытке построить этот проект я получаю много ошибок вида:

ошибка C2039: 'IXMLDOMNode': не является членом 'MSXML2'

Эти ошибки возникаютпо следующим объявлениям

CComPtr<MSXML2::IXMLDOMNode> pNode;

Другие члены не найдены, включая IXMLDOMDocument и IXMLDOMNode.

1 Ответ

2 голосов
/ 26 января 2011

Вы можете это исправить

  1. Включать заголовок msxml2.h.
  2. Удалить USE_MSXML2_NAMESPACE и using namespace MSXML2 код.
  3. Используйте CComPtr<IXMLDOMNode> pNode; без пространства имен.

Я видел много проектов, использующих ключевое слово import, чтобы попросить Visual C ++ сгенерировать заголовочный файл из TBL, используя пространство имен MSXML2. Тем не менее, использование заголовка и ссылки на lib - мой любимый способ избежать использования ключевого слова import, поскольку оно не соответствует стандарту c ++. Суть в том, чтобы не смешивать два подхода при обновлении старых проектов, что приведет к таким проблемам.

...