[转]VS2010遇到_WIN32_WINNT宏定义问题

VS2010遇到_WIN32_WINNT宏定义问题

在xp和win7上都遇到一个诡异的问题,先记下来。 在visual studio 2010编译程序的时候,出现如下的报错: Error C1189: #error:  This file requires _WIN32_WINNT to be #defined at least to 0×0403. Value 0×0501 or higher is recommended.    D:Program FilesMicrosoft Visual Studio 10.0VCatlmfcincludeatlcore.h 在网上找这个问题的解决方法,都是在stdafx.h添加:

#ifndefWINVER        

#defineWINVER 0×0501

#endif

  

#ifndef_WIN32_WINNT 

#define_WIN32_WINNT 0×0501

#endif                         

  

#ifndef_WIN32_WINDOWS      

#define_WIN32_WINDOWS 0×0501

#endif

  

#ifndef_WIN32_IE             

#define_WIN32_IE 0×0601     

#endif

但对我并没有解决问题,因为_WIN32_WINNT明显已经在其他地方定义了,因而上述代码的#ifndef都失效了;

进一步问题显示的情况如下: 鼠标移至atlcore.h文件中的_WIN32_WINNT上,浮动窗口给出提示:#define _WIN32_WINNT 0×400,可见某处已经将其宏定义为0×400,故而报错; 

image

但是当我右击选择“Go to definition”时,Find窗口弹出寻找一堆结果:

可以看到并没有上面显示的0×400,真是奇怪啊。 针对这个问题,有一个解决方法如下: 

在Project Property –> Configuration Properties –> C/C++  -> Command Line的Additional Options框中输入:

/D “_WIN32_WINNT=0×0501” 

如果操作系统是Windows server 2003,则上述0×0501处改为0×0502;若为Windows 7,则为0×0601。

11月7日更新:  

另一个应该可行的方法是在Visual studio 2010的项目属性设置中,将Platform Toolset 改成v90,不过这要求您的机子上装了visual studio 2008。

vs2010

http://hi.baidu.com/mjesse/item/9d72361d9cad5559f1090edb

posted @ 2014-04-02 11:58  言兑  阅读(797)  评论(0编辑  收藏  举报