我们有一个现有的(旧)代码行,我们最近从 VC6 转换为 VS2008(沿途转换为 VS2005)。转换后,所有(或大部分)vcproj 文件通过预处理器设置将 WINVER 设置为 0x0500。在我们的很多预编译头文件(通常是 stdafx.h)中,WINVER 设置为 0x0500(有些仍然设置为 0x0400)。如果我在我们的主 exe 上使用 dumpbin /headers,它显示操作系统版本是 5.0 (Windows 2000)。
在更改 vcproj 预处理器设置以使 WINVER 和 WIN32_WINNT 为 0x0501 并在 stdafx.h 文件中进行类似更改并重新构建后,dumpbin 仍然显示操作系统版本为 5.0。
我还使用 VS2008 创建了一个全新的控制台应用程序(以及一个全新的 MFC 应用程序)并构建了它们。即使通过 targetver.h 文件设置的 WINVER(和 WIN32_WINNT)为 0x0600,这些 exe 也显示操作系统版本为 5.0。
我猜想将 WINVER 和/或 WIN32_WINNT 设置为 0x0501 或 0x0600 会对 dumpbin 显示的操作系统版本产生一些影响。我是对的,我应该期望 dumpbin 显示对应于 WINVER 和/或 WIN32_WINNT 的操作系统版本吗?
我已经阅读了一些关于这方面的好文章(msdn 上的“使用 Windows 标头”,The Old New Thing 上的“WINVER 之间有什么区别...”,以及这个特别有趣的文章:http: //blogs.msdn.com /dsvc/archive/2009/06/19/troubleshooting-not-a-valid-win32-application-error-at-the-startup.aspx
虽然操作系统版本字段中出现的确切版本可能不是一个大问题,但我们希望了解行为并能够做“正确”的事情以确保我们正确使用这些宏和设置。
谢谢你的帮助