我有一个C++项目,引用了许多其他项目/库。这是一个多年前创建的应用程序。大约每年更新一次,并完成一个新版本。多年来,我一直使用Visual Studio 6更新和构建这个应用程序的新版本,没有任何问题。
我正在尝试切换到Visual Studio 10(现在是VS 2013)。最初,我遇到了几个警告和错误,这是由于VS版本之间的兼容性问题。我能照顾好大部分人。然而,我仍然对以下错误感到困惑:
第一个月
该错误发生在一些引用的项目库中。我检查了有问题的项目库,我找不到任何对WINVER的引用。
我已经在互联网上搜索了这方面的信息,找到了一些主题,但没有什么是具体到我的问题。有人能解释一下这里发生了什么吗?
先谢了。LA
4条答案
按热度按时间falq053o1#
所有MFC应用程序都在某处定义了
WINVER
宏值(如果您没有自己定义的话)。我假设MS已经在默认情况下删除了它自己的头文件中的定义,并且现在强制您显式定义它。所以,要解决这个问题,要么把
#define
放在你的“预处理器”编译器选项中,要么放在你的预编译头文件的顶部(即stdafx. h)。注意
0x501
是Windows XP支持。0x600
是Vista,0x601
是Windows 7 -我想起这一点是多么悲伤!disbfnqx2#
我在Windows 7和Visual Studio 2013上遇到了同样的错误。
在我的例子中,我的项目有一个名为
stdafx.h
的源文件,在该文件中有字符串
我改成了
型
错误消失了。
brvekthn3#
默认情况下,WINVER在预处理器中定义为0x 0500。要克服此错误,请从Configuration Properties => c/c++ => Preprocessor选项卡中删除定义的win版本“WINVER= 0x 0500”并重新构建。
或者你可以在你的代码中提供更高的WIN VERSION作为#define _WIN32_WINNT 0x 601,无论你在哪里出错。
0s7z1bwu4#
对我来说,解决的问题是将/D_WIN32_WINNT= 0x 0601-DWINVER=_WIN32_WINNT添加到
项目属性-> C/C++ ->所有选项->其他选项