我们的 C++ 项目(仍然)使用Treat wchar_t as Built-in: No (/Zc:wchar_t-)
在 VS6 上编译时的选项。
这导致wchar_t
只是unsigned short
( WORD
) 的 typedef。
我们想改变这一点,以便将wchar_t
其作为适当的内置类型处理——这将大大简化(现代)库的集成。
问题是,我们确实链接到了一些我们无法重新编译的 DLL,这些 DLL 公开了它们的字符串,unsigned short*
并且它们的头文件使用wchar_t*
. 当 wchar_t 是内置类型时,这将导致链接器错误,因为显然导出符号不同。
更改标头需要添加一种转换层——我当然不想将转换添加到调用这些标头中的类的所有代码中。
是否可以修复 DLL,以便它们的导出符号“假装”导出内置wchar_t
而不是WORD
? 毕竟这两种类型在 VC++ 中是 100% 二进制兼容的。
还有其他想法吗?