我有一个C ++项目,它引用了许多其他项目/库。这适用于许多年前创建的应用程序。大约每年更新一次,然后完成一个新版本。多年来,我已经使用Visual Studio 6来更新和构建此应用程序的新版本,而没有任何问题。

我正在尝试切换到Visual Studio 10(以及现在的VS2013)。最初,由于VS版本之间的兼容性问题,我遇到了一些警告和错误。我能够照顾大多数。但是,我仍然对以下错误感到困惑:

error C1189: #error : MFC does not support WINVER less than 0x0501. Please change the definition of WINVER in your project properties or precompiled header. C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include\afxv_w32.h

该错误在一些引用的项目库中发生。我检查了有问题的项目库,但找不到任何WINVER参考。

我已经在互联网上搜索了有关此信息,并找到了一些主题,但是没有什么是我的问题特有的。有人可以阐明这里可能发生的事情吗?

提前致谢。
洛杉矶

最佳答案

如果您自己没有定义WINVER宏值,则所有MFC应用程序都将其定义在某个位置。我假设MS默认已在其自己的头文件中删除了该定义,并且现在强制您明确定义它。

因此,要解决您的问题,请将#define放在“预处理器”编译器选项中,或放在预编译头文件的顶部(即stdafx.h)。

注意0x501是Windows XP支持。 0x600是Vista,0x601是Windows 7-我为记住这一点而感到难过!

10-04 21:27