在 Visual Studio 2015 TCHAR 问题中编译旧版 C++ 代码

Compiled Legacy C++ Code in Visual Studio 2015 TCHAR issues

我正在处理一些我不太熟悉的遗留代码。我在 visual studio 2015 从 visual studio 2012 重新编译我的项目时遇到错误。

我对函数“_getts”有引用错误,它通常是 "tchar.h".

我将我的 visual studio 2012 安装与我的 2015 安装进行了比较,我发现头文件 "tchar.h" 不再包含在发货安装中。经过进一步研究,我发现 Microsoft 发布了 "Universal CRT",其中现在包含我看到的一些头文件,这些文件是从 2015 年删除的。在 Microsoft 文档中,我看到 Visual Studio 2015 仍然清楚地引用 "tchar.h".

我认为这很简单,我显然忽略了。如果有任何我遗漏的好的文档也请提供。

谢谢

_getts只是一个宏定义,所以链接器找不到它。尝试在 main():

之前定义宏
#define _getts _getws

_getts 宏用于根据字符集设置解析为 gets (ANSI) 或 _getws (Unicode)。这两个函数都已在 VC++ 2015 年与宏本身一起停用。

来自Breaking Changes in Visual C++ 2015

The gets and _getws functions have been removed. The gets function was removed from the C Standard Library in C11 because it cannot be used securely. The _getws function was a Microsoft extension that was equivalent to gets but for wide strings. As alternatives to these functions, consider use of fgets, fgetws, gets_s, and _getws_s.