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

时间:2016-02-03 14:47:41

标签: c++ visual-studio-2012 visual-studio-2015 tchar

我正在研究一些我不太熟悉的遗留代码。当我从visual studio 2012在visual studio 2015中重新编译我的项目时,我遇到了一个错误。

我有函数“_getts”的引用错误,这通常是其中的一部分 “TCHAR.H”。

enter image description here

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

我觉得这很简单,我很清楚。如果有任何我错过的好文件,请提供。

由于

2 个答案:

答案 0 :(得分:0)

_getts只是一个宏定义,这就是链接器无法找到它的原因。尝试在main()之前定义宏:

#define _getts _getws

答案 1 :(得分:0)

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

来自Breaking Changes in Visual C++ 2015

  

已删除gets和_getws函数。获取功能已从C11中的C标准库中删除,因为它无法安全使用。 _getws函数是Microsoft扩展,相当于获取但是对于宽字符串。作为这些函数的替代方法,请考虑使用fgets,fgetws,gets_s和_getws_s。