我的C ++ / MFC代码在VS 2013中编译得很好,但是当我使用VS 2015编译时,我收到了这个错误:
AnyCPU
我的代码中没有使用LCMapString,所以我不知道它来自何处?
答案 0 :(得分:7)
我遇到了同样的问题。对我来说原因是这样的:项目的一部分设置_WIN32_WINNT以支持XP,其他文件没有这个定义。因此,MFC标头包含在支持平台的不同值中,从而导致出现这种奇怪的错误。
答案 1 :(得分:1)
我解决了这个问题。我不得不手动删除前一个编译器生成的所有obj文件,因为VS 2015中的clean和rebuild选项似乎没有正确删除它们。
答案 2 :(得分:1)
更正_WIN32_WINNT的版本细节,_WIN32_WINNT解决了这个问题。
你可以在这里看到类似的帖子。
Compile Errors upgrading ATL project from vs2010 to vs2013
(WINVER或_WIN32_WINNT)
答案 3 :(得分:1)
该定义受到最小目标Windows版本的保护。 这个守卫使用你的一个定义或NTDDI_VERSION(它是从(sdkddkver.h)中的另一个定义创建的。
更正了_WIN32_WINNT的版本细节,WINVER解决了这个问题。 转到:
Properties->Configuration properties->C/C++->Preprocessor->Preprocessor
定义并检查定义了哪些宏。
将其更改为
NTDDI_VERSION= 0x06030000
WINVER=0x0A00
_WIN32_WINNT=0x0A00
解决了我的问题。 这里0A00适用于windows10。请参阅下面的链接 https://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx
答案 4 :(得分:0)
在StdAfx.h中定义以下宏:
//对于Windows 10
NTDDI_VERSION 0x0A000000
#define WINVER 0x0A00
#define _WIN32_IE 0x0A00
还请根据您的环境在下面的MSDN链接中获取WINVER和NTDDI_VERSION。
https://docs.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt?view=vs-2019
https://docs.microsoft.com/en-us/windows/win32/winprog/using-the-windows-headers