我的问题是 Xerces 和 Windows 都有一个'DOMDocument'
对象。Xerces 以及我在这里、这里和这里读到的几乎所有内容都建议定义名称空间或取消定义DOMDocument
,它应该看起来像这样。
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。
想法?
更新:
我#undef
在添加 xerces 标头之前尝试过,但我仍然收到错误。所以我真的很困惑为什么这两种解决方案都不适合我。
更新 2:
我也尝试将命名空间从更改为XERCES_CPP_NAMESPACE::DOMDocument
,xercesc::DOMDocument
但这并没有帮助。