C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(1545):错误 C2220:警告被视为错误 - 未生成 'object' 文件

C:\Program Files (x86)\Windows Kits\8.1\Include\um\dbghelp.h(1545): error C2220: warning treated as error - no 'object' file generated

当我从 "Playing for Data" 论文构建 renderdoc 项目时,出现以下错误(作者对 VS13 没有问题,所以我想知道它是否可能是 VS15 的问题):

1>------ Build started: Project: spirv, Configuration: Debug Win32 ------
2>------ Build started: Project: crash_generation_client, Configuration: Debug Win32 ------
3>------ Build started: Project: crash_generation_server, Configuration: Debug Win32 ------
4>------ Build started: Project: exception_handler, Configuration: Debug Win32 ------
1>  PpTokens.cpp
4>  exception_handler.cc
3>  client_info.cc
3>  minidump_generator.cc
3>  crash_generation_server.cc
2>  crash_generation_client.cc
2>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(1545): error C2220: warning treated as error - no 'object' file generated
3>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(1545): error C2220: warning treated as error - no 'object' file generated (compiling source file client_info.cc)
2>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(1545): warning C4091: 'typedef ': ignored on left of '' when no variable is declared
3>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(1545): error C2220: warning treated as error - no 'object' file generated (compiling source file minidump_generator.cc)
2>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(3191): warning C4091: 'typedef ': ignored on left of '' when no variable is declared
3>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(1545): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file client_info.cc)
3>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(1545): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file minidump_generator.cc)
3>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(3191): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file minidump_generator.cc)
3>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(3191): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file client_info.cc)
3>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(1545): error C2220: warning treated as error - no 'object' file generated (compiling source file crash_generation_server.cc)
3>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(1545): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file crash_generation_server.cc)
3>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(3191): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file crash_generation_server.cc)
4>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(1545): error C2220: warning treated as error - no 'object' file generated
4>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(1545): warning C4091: 'typedef ': ignored on left of '' when no variable is declared
4>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(3191): warning C4091: 'typedef ': ignored on left of '' when no variable is declared
1>..\..\..rdparty\glslang\glslang\MachineIndependent\preprocessor\PpTokens.cpp(218): error C2220: warning treated as error - no 'object' file generated
1>..\..\..rdparty\glslang\glslang\MachineIndependent\preprocessor\PpTokens.cpp(218): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>  C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt\string.h(119): note: see declaration of 'strcpy'
1>..\..\..rdparty\glslang\glslang\MachineIndependent\preprocessor\PpTokens.cpp(223): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>  C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt\string.h(119): note: see declaration of 'strcpy'
5>------ Build started: Project: renderdoc, Configuration: Debug Win32 ------
5>  core.cpp
5>  win32_callstack.cpp
5>  replay_renderer.cpp
5>  serialiser.cpp
5>serialise\serialiser.cpp(493): error C2220: warning treated as error - no 'object' file generated
5>serialise\serialiser.cpp(493): warning C4456: declaration of 'memoryBufEnd' hides previous local declaration
5>  serialise\serialiser.cpp(493): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings
5>  serialise\serialiser.cpp(446): note: see declaration of 'memoryBufEnd'
5>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(1545): error C2220: warning treated as error - no 'object' file generated (compiling source file os\win32\win32_callstack.cpp)
5>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(1545): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file os\win32\win32_callstack.cpp)
5>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(3191): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file os\win32\win32_callstack.cpp)
5>core\core.cpp(854): error C2220: warning treated as error - no 'object' file generated
5>core\core.cpp(854): warning C4456: declaration of 'it' hides previous local declaration
5>  core\core.cpp(854): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings
5>  core\core.cpp(839): note: see declaration of 'it'
5>replay\replay_renderer.cpp(49): fatal error C1083: Cannot open include file: 'ImfOutputFile.h': No such file or directory
========== Build: 0 succeeded, 5 failed, 6 up-to-date, 0 skipped ==========

这是我的一些截图:

我有 Windows 10 家庭版和 Visual Studio 企业版 2015。

然后我选择了 "Treat warnings as error" 到 "No",但仍然出现错误:

1>------ Build started: Project: spirv, Configuration: Debug Win32 ------
2>------ Build started: Project: crash_generation_client, Configuration: Debug Win32 ------
3>------ Build started: Project: crash_generation_server, Configuration: Debug Win32 ------
4>------ Build started: Project: exception_handler, Configuration: Debug Win32 ------
2>  crash_generation_client.cc
4>  exception_handler.cc
3>  client_info.cc
3>  minidump_generator.cc
3>  crash_generation_server.cc
1>  PpTokens.cpp
3>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(1545): error C2220: warning treated as error - no 'object' file generated (compiling source file client_info.cc)
3>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(1545): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file client_info.cc)
2>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(1545): error C2220: warning treated as error - no 'object' file generated
2>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(1545): warning C4091: 'typedef ': ignored on left of '' when no variable is declared
2>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(3191): warning C4091: 'typedef ': ignored on left of '' when no variable is declared
3>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(3191): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file client_info.cc)
3>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(1545): error C2220: warning treated as error - no 'object' file generated (compiling source file minidump_generator.cc)
3>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(1545): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file minidump_generator.cc)
3>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(3191): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file minidump_generator.cc)
3>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(1545): error C2220: warning treated as error - no 'object' file generated (compiling source file crash_generation_server.cc)
3>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(1545): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file crash_generation_server.cc)
3>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(3191): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file crash_generation_server.cc)
4>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(1545): error C2220: warning treated as error - no 'object' file generated
4>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(1545): warning C4091: 'typedef ': ignored on left of '' when no variable is declared
4>C:\Program Files (x86)\Windows Kits.1\Include\um\DbgHelp.h(3191): warning C4091: 'typedef ': ignored on left of '' when no variable is declared
1>..\..\..rdparty\glslang\glslang\MachineIndependent\preprocessor\PpTokens.cpp(218): error C2220: warning treated as error - no 'object' file generated
1>..\..\..rdparty\glslang\glslang\MachineIndependent\preprocessor\PpTokens.cpp(218): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>  C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt\string.h(119): note: see declaration of 'strcpy'
1>..\..\..rdparty\glslang\glslang\MachineIndependent\preprocessor\PpTokens.cpp(223): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>  C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt\string.h(119): note: see declaration of 'strcpy'
5>------ Build started: Project: renderdoc, Configuration: Debug Win32 ------
5>  core.cpp
5>  win32_callstack.cpp
5>  replay_renderer.cpp
5>  serialiser.cpp
5>serialise\serialiser.cpp(493): error C2220: warning treated as error - no 'object' file generated
5>serialise\serialiser.cpp(493): warning C4456: declaration of 'memoryBufEnd' hides previous local declaration
5>  serialise\serialiser.cpp(493): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings
5>  serialise\serialiser.cpp(446): note: see declaration of 'memoryBufEnd'
5>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(1545): error C2220: warning treated as error - no 'object' file generated (compiling source file os\win32\win32_callstack.cpp)
5>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(1545): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file os\win32\win32_callstack.cpp)
5>C:\Program Files (x86)\Windows Kits.1\Include\um\dbghelp.h(3191): warning C4091: 'typedef ': ignored on left of '' when no variable is declared (compiling source file os\win32\win32_callstack.cpp)
5>replay\replay_renderer.cpp(49): fatal error C1083: Cannot open include file: 'ImfOutputFile.h': No such file or directory
5>core\core.cpp(854): error C2220: warning treated as error - no 'object' file generated
5>core\core.cpp(854): warning C4456: declaration of 'it' hides previous local declaration
5>  core\core.cpp(854): note: to simplify migration, consider the temporary use of /Wv:18 flag with the version of the compiler with which you used to build without warnings
5>  core\core.cpp(839): note: see declaration of 'it'
========== Build: 0 succeeded, 5 failed, 6 up-to-date, 0 skipped ==========

同样将警告级别从 4 更改为 3:

请提出解决方案。

具体来说,我从 dbghelp.h 中的这部分代码中得到错误:

typedef enum {
    hdBase = 0, // root directory for dbghelp
    hdSym,      // where symbols are stored
    hdSrc,      // where source is stored
    hdMax       // end marker
};

   case PpAtomConstDouble:
        strcpy(ppToken->name, tokenText);
        ppToken->dval = atof(ppToken->name);
        break;

else if(header->version == SERIALISE_VERSION)
{
    const byte *memoryBufEnd = memoryBuf + length;

    memoryBuf += sizeof(FileHeader);

else
{
    auto it = m_WindowFrameCapturers.begin();
    // active window could be the first in our list, move
    // to second (we know from above there are at least 2)
    if(m_ActiveWindow == it->first)
        it++;
    m_ActiveWindow = it->first;
}



  Severity  Code    Description Project File    Line    Suppression State
    Error   C1083   Cannot open include file: 'ImfOutputFile.h': No such file or directory  renderdoc   D:\playing-for-data\renderdoc\renderdoc\replay\replay_renderer.cpp  49  


  #include <ImfOutputFile.h>

更新:我将解决方案重新定位到 10.0.14393.0(默认选择),清理并构建并得到相同的错误:

Visual Studio 解决方案包含 13 个 C++ 项目,所有这些项目可能都激活了 "Treat warnings as errors" 设置。尝试为所有项目禁用此选项并重新编译。

dbghelp.h 的问题是编码错误的真实警告。 typedef 指定需要一个变量。我相信您可能想从 Microsoft 更新您的库。