2013-01-15 17 views
0

我有很多.cpp文件的項目。在這些文件中,我需要wchar_t的模式下使用pugixml,其中一些使用char和pugixml在正常模式時已經實現。 我知道我必須使用定義在wchar_t的模式和正常模式在一個項目中使用pugixml

#define PUGIXML_WCHAR_MODE 

當我試圖使用wchar_t的模式文件來這樣做:

#define PUGIXML_WCHAR_MODE 
*some code* 
#undef 

它給我鏈接錯誤。我做錯了什麼?

回答

1

pugixml沒有設計這樣的工作方式。理想情況下,你可以嘗試更改代碼,使用編譯標誌的一個組合(功能進行UTF-8 < - > wchar_t的轉換,pugi :: as_utf8和pugi :: as_wide,可能會幫助)。

有應工作不支持的方式,但不是特別漂亮 - 你可以爲WCHAR配置重命名pugi命名空間。要做到這一點,你必須創建一個特殊的頭文件,即pugixmlw.hpp,它將包含在寬字符配置中;這頭的內容應該是大致如下:

#ifndef HEADER_PUGIXMLW_HPP 
#define HEADER_PUGIXMLW_HPP 

#define PUGIXML_WCHAR_MODE 
#define pugi pugiw 

#undef HEADER_PUGIXML_HPP 
#undef HEADER_PUGICONFIG_HPP 
#undef SOURCE_PUGIXML_CPP 

#undef PUGIXML_TEXT 
#undef PUGIXML_CHAR 

#include "pugixml.hpp" 

#undef PUGIXML_TEXT 
#undef PUGIXML_CHAR 

#undef HEADER_PUGIXML_HPP 
#undef HEADER_PUGICONFIG_HPP 
#undef SOURCE_PUGIXML_CPP 

#undef pugi 
#undef PUGIXML_WCHAR_MODE 

#endif 

如果您使用僅標頭pugixml變種,這應該是它;如果你正在編譯pugixml.cpp,你就必須添加一個額外的源文件,pugixmlw.cpp,其內容如下:

#define PUGIXML_WCHAR_MODE  
#define pugi pugiw 
#include "pugixml.cpp" 

這應該是它。

相關問題