我的問題是,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
,但這並沒有幫助。