我的问题是,Xerces和Windows都有一个'DOMDocument'
对象。 Xerces和几乎所有我读过的东西here,here和here建议定义命名空间或undefine DOMDocument
,应该看起来像这样。C++“'DOMDocument':重新定义”与Xercesc错误
Void foo(XERCES_CPP_NAMESPACE::DOMDocument* pDocument);
或
#undef DOMDocument
#include <xerces/Stuff>
我想去理智的路线,只是应用的命名空间,但它似乎并没有工作。我真的很犹豫是否使用#undef
,感觉就像在绕开这个问题。
windows文件msxml.h
是抱怨重新定义的那个。
这可能与他们加载的顺序有关吗?我有这样的事情,
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <list>
#include <map>
#include <ctime>
#include "XMLClass.h"
凡XMLClass.h
包括Xerces的头。很难说出是什么原因导致了这个问题,因为这个错误显示在微软的头文件中。
我也在整个项目中搜索'DOMDocument'
,并且在任何地方使用'DOMDocument'
都有一个命名空间XERCES_CPP_NAMESPACE
。
注:我使用的Xerces 3.1和VS 2010
想法?
更新: 我已经加入了Xerces头,我仍然收到错误尝试过#undef
。所以我真的很迷茫,为什么两种解决方案都不适合我。
更新2: 我也试着改变从XERCES_CPP_NAMESPACE::DOMDocument
的命名空间xercesc::DOMDocument
,但这并没有帮助。