pugixml は、このように動作するようには設計されていません。理想的には、コンパイル フラグの 1 つの組み合わせを使用するようにコードを変更してみることができます (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"
それだけです。