VS 2015编译器错误'LCMapStringEx':找不到标识符

Mar*_*o M 13 compiler-errors visual-studio visual-studio-2015

我的C++/MFC代码在VS 2013中编译得很好,但是当我使用VS 2015编译时,我收到此错误:

C:\VS\VC\atlmfc\include\atlwinverapi.h(710): 
error C3861: 'LCMapStringEx': identifier not found
Run Code Online (Sandbox Code Playgroud)

我的代码中没有使用LCMapString,所以我不知道它来自哪里?

fsc*_*itt 7

我有同样的问题.对我来说原因是这样的:项目的一部分设置_WIN32_WINNT以支持XP,其他文件没有这个定义.因此,MFC标头包含在支持平台的不同值中,从而导致此奇怪错误.


Nav*_*een 5

该定义受最低目标 Windows 版本保护。这个守卫使用你的一个定义或 NTDDI_VERSION(它是从 (sdkddkver.h) 中的另一个定义创建的)。

修正_WIN32_WINNT的版本细节,WINVER解决了问题。去:

Properties->Configuration properties->C/C++->Preprocessor->Preprocessor 
Run Code Online (Sandbox Code Playgroud)

定义并检查定义了哪些宏。

将它们更改为

NTDDI_VERSION= 0x06030000
WINVER=0x0A00
_WIN32_WINNT=0x0A00
Run Code Online (Sandbox Code Playgroud)

解决了我的问题。这里 0A00 适用于 windows10。请参阅以下链接 https://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx


Dat*_*ale 2

在 StdAfx.h 中定义以下宏:

//对于Windows 10

NTDDI_版本 0x0A000000

#定义WINVER 0x0A00

#定义_WIN32_IE 0x0A00

另请根据您的环境参考下面的 MSDN 链接以了解 WINVER 和 NTDDI_VERSION。

https://learn.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt?view=vs-2019

https://learn.microsoft.com/en-us/windows/win32/winprog/using-the-windows-headers