“MSXML2”在VC ++ 2010中没有成员“IXMLDOMNode”问题

时间:2011-01-25 02:50:58

标签: visual-c++ atl msxml

我正在尝试编译我继承的使用MSXML2的VC ++项目。这是一个ATL .EXE项目。头文件包括以下内容:

#include "msxml2.h"

using namespace MSXML2;

预处理器定义包括__USE_MSXML2_NAMESPACE__,我添加到项目中,因为没有它,MSXML2名称空间是未定义的。尝试构建此项目时,我收到了许多错误:

错误C2039:'IXMLDOMNode':不是'MSXML2'的成员

这些错误由以下

之类的声明产生
CComPtr<MSXML2::IXMLDOMNode> pNode;

找不到其他成员,包括IXMLDOMDocument和IXMLDOMNode。

1 个答案:

答案 0 :(得分:2)

您可以解决此问题

  1. 包含msxml2.h标题。
  2. 删除USE_MSXML2_NAMESPACEusing namespace MSXML2代码。
  3. 使用不带名称空间的CComPtr<IXMLDOMNode> pNode;
  4. 我见过许多使用import关键字的项目要求Visual C ++使用MSXML2命名空间从TBL生成头文件。但是,使用标题和链接到lib是我最喜欢避免使用import关键字的方法,因为它不是c ++标准。最重要的是避免在刷新旧项目时混合使用这两种方法,这将导致这样的问题。