将应用程序从vs2005升级到vs2012后构建问题

时间:2012-11-02 05:47:52

标签: visual-c++ visual-studio-2012 build-error

我需要将我的应用程序从visual studio 2005 IDE升级到visual studio 2012。 升级向导成功转换解决方案和项目文件,错误和警告很少。

但是当我开始构建应用程序时,我收到错误消息:

错误C1189:#error:此文件要求_WIN32_WINNT #defined至少为0x0403。建议值为0x0501或更高。在atlcore.h!

我尝试将版本号更改为0x0500,0x0501,0x0502以及0x0601(通过/ D编译器选项并在atlcore.h中手动更改,WINVER也已更改。)但没有运气。显示相同的错误。

我哪里出错?

3 个答案:

答案 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中评论支票暂时解决问题:

如果_WIN32_WINNT> 0x0501

//#error此文件要求_WIN32_WINNT #defined至少为0x0403。建议值为0x0501或更高。

ENDIF

我知道这不是[编辑IDE提供的文件]的正确方法,但是因为它可能是由于安装不当造成的。

如果有人遇到永久性修复,请告诉我。

答案 2 :(得分:0)

您可以在项目设置,C / C ++,预处理器定义下添加项目的预处理器指令,附加WINVER = 0x0501;

(您也可以取消定义定义)

我想知道你是否使用预编译的头文件覆盖stdafx.h的更改,这是确保设置的方法

此预处理器设置保持不变,直到项目文件中的代码更改它为止,此时如果这不能解决问题,那么您必须找到设置/取消设置/检查的方式或位置;但解决方案不应涉及对Windows SDK文件的任何更改