【发布时间】:2021-07-21 12:38:28
【问题描述】:
我们一直在使用 Xerces 3.1.1 的旧预构建版本,它具有:
3.1.1:Xerces_autoconf_config.hpp
#ifdef _NATIVE_WCHAR_T_DEFINED
# define XERCES_XMLCH_T wchar_t
#else
# define XERCES_XMLCH_T unsigned short
#endif
...
typedef XERCES_XMLCH_T XMLCh;
转为使用 vcpkg,它已安装 3.2.3,但出现编译错误,因为它使用的是 wchar_t,而不是:
3.2.3: Xerces_autoconf_config.hpp
#define XERCES_XMLCH_T char16_t
...
typedef XERCES_XMLCH_T XMLCh;
我们有很多代码调用,例如src.setEncoding(L"UTF-16");,这显然会导致错误,例如:
void xercesc_3_2::InputSource::setEncoding(const XMLCh *const )': 无法将参数 1 从 'const wchar_t [7]' 转换为 'const XMLCh *常量'
我不确定 Xerces 是否已更改,或者这是否是 vcpkg 的默认构建设置的结果。是否有可能将其恢复到wchar_t(黑客来源除外),如果可以的话如何?不幸的是,我是一个完全的 cmake 菜鸟。
【问题讨论】: