我正在尝试编译我继承的使用MSXML2的VC ++项目。这是一个ATL .EXE项目。头文件包括以下内容:
#include "msxml2.h"
using namespace MSXML2;
预处理器定义包括__USE_MSXML2_NAMESPACE__,我添加到项目中,因为没有它,MSXML2名称空间是未定义的。尝试构建此项目时,我收到了许多错误:
错误C2039:'IXMLDOMNode':不是'MSXML2'的成员
这些错误由以下
之类的声明产生CComPtr<MSXML2::IXMLDOMNode> pNode;
找不到其他成员,包括IXMLDOMDocument和IXMLDOMNode。
答案 0 :(得分:2)
您可以解决此问题
msxml2.h
标题。USE_MSXML2_NAMESPACE
和using namespace MSXML2
代码。CComPtr<IXMLDOMNode> pNode;
。我见过许多使用import关键字的项目要求Visual C ++使用MSXML2命名空间从TBL生成头文件。但是,使用标题和链接到lib是我最喜欢避免使用import关键字的方法,因为它不是c ++标准。最重要的是避免在刷新旧项目时混合使用这两种方法,这将导致这样的问题。