【问题标题】:VS 2015 compiler error 'LCMapStringEx': identifier not foundVS 2015 编译器错误“LCMapStringEx”:找不到标识符
【发布时间】:2016-03-30 07:24:48
【问题描述】:

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

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

我没有在代码中的任何地方使用 LCMapString,所以我不知道这是从哪里来的?

【问题讨论】:

    标签: visual-studio compiler-errors visual-studio-2015


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      该定义被保护为最低目标 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

      【讨论】:

      • 在项目标头或代码中手动设置这些宏正是导致此问题的原因,通常是几年后,当有人继承项目并尝试使用更新的编译器或 SDK 构建它时。另请参阅stackoverflow.com/a/34800328/2279059
      【解决方案3】:

      我解决了这个问题。我不得不手动删除之前编译器生成的所有 obj 文件,因为 VS 2015 中的 clean and rebuild 选项似乎没有正确删除它们。

      【讨论】:

        【解决方案4】:

        更正_WIN32_WINNT的版本细节,_WIN32_WINNT解决了问题。

        你可以在这里看到类似的帖子。

        Compile Errors upgrading ATL project from vs2010 to vs2013

        (WINVER 或 _WIN32_WINNT)

        【讨论】:

          【解决方案5】:

          在 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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-04-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-07-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多