我需要我的应用程序从Visual Studio 2005的升级IDE到Visual Studio 2012。 该升级换代向导转换解决方案和项目,没有错误和一些警告成功文件。
但是,当我开始构建应用程序,我得到错误信息:
错误C1189:#错误:该文件要求_WIN32_WINNT进行#defined至少英语 - 澳大利亚。 值0x0501或更高的建议。 在atlcore.h!
我想没有改变版本在0x0500,0x0501,0x0502,也0x0601(均通过/ d编译器选项,并在atlcore.h手动更改,WINVER也发生了变化。),但没有运气。 正在显示的同样的错误。
我在哪里去了?
视觉C ++不再支持针对Windows 95,Windows 98中,视窗ME,或Windows NT。 如果您WINVER _WIN32_WINNT或宏被分配到这些版本的Windows中的一个,您必须修改宏。
要修改宏,在头文件,添加以下代码行。
#define WINVER 0x0500
#define _WIN32_WINNT 0x0500
编辑:
WINVER决定建立自己的应用程序,这反过来将决定哪些程序由标头中找到编译时所需的最小平台SDK。
#define _WIN32_WINNT_NT4 0x0400
#define _WIN32_WINNT_WIN2K 0x0500
#define _WIN32_WINNT_WINXP 0x0501
#define _WIN32_WINNT_WS03 0x0502
#define _WIN32_WINNT_WIN6 0x0600
#define _WIN32_WINNT_VISTA 0x0600
#define _WIN32_WINNT_WS08 0x0600
#define _WIN32_WINNT_LONGHORN 0x0600
#define _WIN32_WINNT_WIN7 0x0601
其他解决方案:
如果您在PC上安装一个Windows SDK(在/微软的SDK / Windows)中,您可以在stdafx.h中#包括(或头你所有的C ++文件包含)。 包括SDKDDKVer.h将针对提供最高的Windows版本。
希望它的工作!!!!!
欲了解更多信息请看这里
问题的评论中atlcore.h支票暂时解决:
如果_WIN32_WINNT> 0x0501
//#错误该文件要求_WIN32_WINNT进行#defined至少英语 - 澳大利亚。 值0x0501或更高的建议。
万一
我知道它不是正确的方式做[编辑由IDE附带文件],但没有,因为它可能是由于不正确的安装。
如果有人越过永久性修正过来,让我知道。
可以添加一个预处理器指令为下项目设置项目,C / C ++,预处理器定义,附加WINVER = 0x0501;
(你也可以取消定义的定义)
我如果您使用它覆盖变化stdafx.h中预编译头纳闷,这是为了确保该设置的方式
此预处理器设置保存,直到该项目文件中的代码改变它,在这一点,如果这不能解决问题,那么你就必须找到如何或在哪里,这是被设置/取消/检查; 但解决方案不应涉及到Windows SDK文件中的任何改变