error C1189:#error:This file requires _WIN32_WINNT to be #defined at least to 0x

原作者所写系统环境不清楚,在win7与VS2010上使用不兼容,出现错误,如图所示

--------------------解决办法-----------------

第1步: 查找stdafx.h头文件(一般头文件定义都在这里,首选就是找这里),结果如上图所示,一共4段---->前3段是关于系统的(干涉,此处就是系统不兼容,所以全部注释掉),最后1段是讲IE的(不干涉,默认处理)

第2步: 旧版本第1步删除了,新版本怎样添加呢?

---->查找MSDN2010版本的(本地的之前装了,不过不小心删除后就一直没用了,现介绍网上的MSDN,网址下:

http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ZH-CN&k=k(MSDNSTART)&rd=true,

或者直接输入MSDN.com也可以 然后查找"修改 WINVER 和 _WIN32_WINNT"

--->网址是这个:

http://msdn.microsoft.com/zh-cn/library/6sehtctf(VS.90).aspx,

不想或不会查找也可以,直接看截图,如图所示:

 --------------这些资料都是来自官网,现在应该知道错误原因了吧,

第3步,就直接告诉你方法

--------------- 第3步:解决方法

步骤1:注释前3段

步骤2:增加1段(有2种方法:1种是MSDN上的,1种是兼容版的模式,2种都可以用,第2种兼容模式是供参考的材料)

 

------------------第1种方法------------------

#define WINVER 0x0500 #define _WIN32_WINNT 0x0500

 

 ------------------第2种方法------------------

写法是摘抄兼容模式的写法,供以后兼容性做的参考提供,另外上面的图中提供了更多兼容模式,当然也保存了下来,详见最后的备注 #ifndef WINVER 0x0500 #define _WIN32_WINNT 0x0500 #endif

 

备注1:源代码,方便复制用

-----------------------------------分2部分:第1部分:老版本 第2部分:新版本---------------------------------------- ----------------------------------第1部分:老版本--------------------------------------

 // 如果您必须使用下列所指定的平台之前的平台,则修改下面的定义。

 // 有关不同平台的相应值的最新信息,请参考 MSDN。

 #ifndef WINVER // 允许使用 Windows 95 和 Windows NT 4 或更高版本的特定功能。

#define WINVER 0x0400 //为 Windows98 和 Windows 2000 及更新版本改变为适当的值。

#endif

#ifndef _WIN32_WINNT // 允许使用 Windows NT 4 或更高版本的特定功能。

#define _WIN32_WINNT 0x0400 //为 Windows98 和 Windows 2000 及更新版本改变为适当的值。

#endif #ifndef _WIN32_WINDOWS // 允许使用 Windows 98 或更高版本的特定功能。

#define _WIN32_WINDOWS 0x0410 //为 Windows Me 及更新版本改变为适当的值。

#endif #ifndef _WIN32_IE // 允许使用 IE 4.0 或更高版本的特定功能。

#define _WIN32_IE 0x0400 //为 IE 5.0 及更新版本改变为适当的值。 #endif

 

----------------------------------第2部分:新版本--------------------------------------

// 如果您必须使用下列所指定的平台之前的平台,则修改下面的定义。

// 有关不同平台的相应值的最新信息,请参考 MSDN。

#ifndef WINVER // 允许使用特定于 Windows XP 或更高版本的功能。

#define WINVER 0x0501 // 将此值更改为相应的值,以适用于 Windows 的其他版本。

#endif #ifndef _WIN32_WINNT // 允许使用特定于 Windows XP 或更高版本的功能。

#define _WIN32_WINNT 0x0501 // 将此值更改为相应的值,以适用于 Windows 的其他版本。

#endif #ifndef _WIN32_WINDOWS // 允许使用特定于 Windows 98 或更高版本的功能。

#define _WIN32_WINDOWS 0x0410 // 将它更改为适合 Windows Me 或更高版本的相应值。

#endif #ifndef _WIN32_IE // 允许使用特定于 IE 6.0 或更高版本的功能。

#define _WIN32_IE 0x0600 // 将此值更改为相应的值,以适用于 IE 的其他版本。值。

#endif

一共2种版本,新版本是在最近的例子中找出来的

 

备注2:另外本次在查找MSDN中,也发现了一个问题,比如刚才查找的C1189,MSDN上就介绍的很好.顺着这个线索,你可以发现MSDN中关于错误代号的解释非常详细.当然本地安装的MSDN上也有(推荐用网上的MSDN),效果如图

 附注1: #define WINVER 0x0400之类定义 写了,反而错误都来了.版本写高了,放到低版本上又说高了,写低了,放到高版本上又说低了.(上面有2种版本的代码) 啥都不写,一点错也没有

-------------------->还待更多实例验证 据说是MFC类向导自动生成(机器写的),不用用户定义,这些宏是管理MFC,ATL哪些函数能使用,哪些函数调用哪些DLL,哪函数函数的功能无效的. 写这的作用:从字面上就能看出是版本兼容问题,当然MSDN上也确定是版本问题(可以查MSDN了解版本代号) 有2个办法可以解决.1个是直接删除,1个是修改到合适版本

------>至于选哪个办法合适,仅仅目前的1,2个例子无法说明问题,待以后例子多时,在来跟踪总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值