我需要将我的应用程序从visual studio 2005 IDE升级到visual studio 2012。 升级向导成功转换解决方案和项目文件,错误和警告很少。
但是当我开始构建应用程序时,我收到错误消息:
错误C1189:#error:此文件要求_WIN32_WINNT #defined至少为0x0403。建议值为0x0501或更高。在atlcore.h!
我尝试将版本号更改为0x0500,0x0501,0x0502以及0x0601(通过/ D编译器选项并在atlcore.h中手动更改,WINVER也已更改。)但没有运气。显示相同的错误。
我哪里出错?
答案 0 :(得分:4)
Visual C ++不再支持Windows 95,Windows 98,Windows 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上(在/ Microsoft SDKs / Windows中)安装了WIndows SDK,则可以在stdafx.h中(或包含在所有C ++文件中的标题中)#include。包括 SDKDDKVer.h 将定位可用的最高Windows版本。
希望它有用!!!!!
了解更多信息SEE HERE
答案 1 :(得分:0)
通过在atlcore.h中评论支票暂时解决问题:
//#error此文件要求_WIN32_WINNT #defined至少为0x0403。建议值为0x0501或更高。
我知道这不是[编辑IDE提供的文件]的正确方法,但是因为它可能是由于安装不当造成的。
如果有人遇到永久性修复,请告诉我。
答案 2 :(得分:0)
您可以在项目设置,C / C ++,预处理器定义下添加项目的预处理器指令,附加WINVER = 0x0501;
(您也可以取消定义定义)
我想知道你是否使用预编译的头文件覆盖stdafx.h的更改,这是确保设置的方法
此预处理器设置保持不变,直到项目文件中的代码更改它为止,此时如果这不能解决问题,那么您必须找到设置/取消设置/检查的方式或位置;但解决方案不应涉及对Windows SDK文件的任何更改