【发布时间】:2012-10-06 16:30:11
【问题描述】:
我有一个用 ISO C++ 编写的库。它不使用 Winapi、TCHAR 或类似的东西。我目前正在将其构建为一个静态库,其字符集设置为 Unicode。我打算将它链接到其他库,其中一些使用 Unicode 构建,一些 - MBCS。
在这种情况下,我是否需要创建两个配置并构建两个版本(MBCS 和 Unicode)?
【问题讨论】:
标签: c++ visual-studio visual-studio-2012
我有一个用 ISO C++ 编写的库。它不使用 Winapi、TCHAR 或类似的东西。我目前正在将其构建为一个静态库,其字符集设置为 Unicode。我打算将它链接到其他库,其中一些使用 Unicode 构建,一些 - MBCS。
在这种情况下,我是否需要创建两个配置并构建两个版本(MBCS 和 Unicode)?
【问题讨论】:
标签: c++ visual-studio visual-studio-2012
这不是问题。使用 utf-16 编码的 Unicode 字符串的代码使用 wchar_t*,使用传统 8 位编码的代码使用 char*。对编译器和链接器都没有歧义。该设置存在的唯一原因是因为 Windows 标头和非标准 <tchar.h> 包含将 typedef(如 TCHAR)转换为这些字符串类型中的任何一种的宏,由 UNICODE 和 _UNICODE #defines 引导。
当然,从使用 char* 字符串的程序中使用这个库将是一个巨大的皮塔饼。程序必须翻译字符串,注意强制转换是不行的。
【讨论】: