如何在Visual Studio中处理Unicode和非Unicode项目的混合

How to deal with a mix of unicode- and non-unicode projects in Visual Studio

本文关键字:Unicode 和非 项目 混合 处理 Visual Studio      更新时间:2023-10-16

序言:我知道Microsoft使用的术语"Unicode"与Microsoft世界之外的术语"Unicode"不一致。当我在下面使用"Unicode"时,我的意思是"UCS2在Windows中使用的"和Visual Studio构建设置的上下文中。

随着即将到来的Visual Studio 2013,Microsoft终于逐步淘汰了MBCS版本。这就是促使我修复我们的代码库以进入 21 世纪的原因,并为我们使用 win32 和 MFC 的所有代码切换到 Unicode 构建。但是,我们使用一些可移植的外部库,不使用任何特定于 Windows 的内容,并且使用 MBCS 设置。我并不期待识别这些库和我们自己的代码之间的每一个交互点,并处理 WideCharToMultiByte()、ATL 转换宏和无处不在的配偶。

所以我的问题是:处理混合 mbcs/Unicode 构建的最佳实践是什么?是否有任何指导文档或示例应用程序?

我希望有一种更好的方法,而不是必须为各种库中使用的所有类型定义我自己的字符串类型:)

从您的描述来看,您似乎拥有这些库。

我会将它们更改为使用"使用通用文本映射"http://msdn.microsoft.com/en-us/library/7dzey6h6.aspx这样,您就可以使用 UNICODE 和为 Windows 定义的_UNICODE编译它们,而在其他系统上无需编译。

不过,您将不得不编写类似您自己的tchar.h的东西(但非常微不足道,例如,只有一堆ifdefs将_tprintf映射到wprintf/printf)。