VS2010遇到_WIN32_WINNT宏定义问题
最近拿到一个别人的工程,是使用VS.net创建的,而我的机器上只有vs2010,于是用自带的转换工具将它转换成vs2010的工程,转换之前我就很担心,怕转换完后会出问题,但是没有办法,我实在是不想再安一个vs.net了。
转完后果不其然真出了问题,在重新build工程时,报了一大堆错误,其中第一个就是“fatal error C1189: #error : This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended”,然后看错误的来源,竟然是atlcore.h,这我就无语了,这是mfc自带的文件,出错的可能性基本上为0,于是只好去请教谷大叔,发现很多人都遇到了这个问题,看了几篇博客和帖子后,大概明白了,应该是_WIN32_WINNT这个宏对应定义的系统的版本号,如果太低的话,编译器就会认为代码无法在当前的系统上编译。
在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。
The following table describes the preferred macros in use by the Windows header files.
Minimum system required Macros to define Windows Server 2008 NTDDI_VERSION >= NTDDI_LONGHORN Windows Vista NTDDI_VERSION >= NTDDI_VISTA Windows Server 2003 SP1 NTDDI_VERSION >= NTDDI_WS03SP1 Windows Server 2003 NTDDI_VERSION >= NTDDI_WS03 Windows XP SP2 NTDDI_VERSION >= NTDDI_WINXPSP2 Windows XP SP1 NTDDI_VERSION >= NTDDI_WINXPSP1 Windows XP NTDDI_VERSION >= NTDDI_WINXP Windows 2000 SP4 NTDDI_VERSION >= NTDDI_WIN2KSP4 Windows 2000 SP3 NTDDI_VERSION >= NTDDI_WIN2KSP3 Windows 2000 SP2 NTDDI_VERSION >= NTDDI_WIN2KSP2 Windows 2000 SP1 NTDDI_VERSION >= NTDDI_WIN2KSP1 Windows 2000 NTDDI_VERSION >= NTDDI_WIN2K
The following table describes the legacy macros in use by the Windows header files.
Minimum system required Macros to define Windows Server 2008 _WIN32_WINNT>=0x0600 WINVER>=0x0600 Windows Vista _WIN32_WINNT>=0x0600 WINVER>=0x0600 Windows Server 2003 _WIN32_WINNT>=0x0502 WINVER>=0x0502 Windows XP _WIN32_WINNT>=0x0501 WINVER>=0x0501 Windows 2000 _WIN32_WINNT>=0x0500 WINVER>=0x0500 Windows NT 4.0 _WIN32_WINNT>=0x0400 WINVER>=0x0400 Windows Me _WIN32_WINDOWS=0x0500 WINVER>=0x0500 Windows 98 _WIN32_WINDOWS>=0x0410 WINVER>=0x0410 Windows 95 _WIN32_WINDOWS>=0x0400 WINVER>=0x0400 Internet Explorer 7.0 _WIN32_IE>=0x0700 Internet Explorer 6.0 SP2 _WIN32_IE>=0x0603 Internet Explorer 6.0 SP1 _WIN32_IE>=0x0601 Internet Explorer 6.0 _WIN32_IE>=0x0600 Internet Explorer 5.5 _WIN32_IE>=0x0550 Internet Explorer 5.01 _WIN32_IE>=0x0501 Internet Explorer 5.0, 5.0a, 5.0b _WIN32_IE>=0x0500 Internet Explorer 4.01 _WIN32_IE>=0x0401 Internet Explorer 4.0 _WIN32_IE>=0x0400 Internet Explorer 3.0, 3.01, 3.02 _WIN32_IE>=0x0300
VS2010遇到_WIN32_WINNT宏定义问题的更多相关文章
- DECLARE_GLOBAL_DATA_PTR宏定义问题
最近闲着顺便看了看6410的uboot代码,因为友善的boot对nand部分代码做了隐藏,所以干脆找了光盘里面三星原厂的uboot代码来看,因为友善的boot代码肯定也是基于厂商的代码改的,肯定可以的 ...
- VS2010中编写宏添加作者信息与函数注释
这里所说的宏是指通过一系列键盘组合键和可以插入自定义内容.下面介绍怎么编写一个自己的宏: 1.在Visual Studio 2010中按Alt+F11打开宏IDE: 2.打开后选择添加模块: 3.在弹 ...
- 自动添加注释—VS2010宏的使用
在敲代码的过程中类和函数都需要进行注释,但总是一遍一遍的复制粘贴觉得很是麻烦,终于找到了一个不错的解决方法:使用宏. 所谓宏,就是一些命令组织在一起,作为一个单独命令完成一个特定任务.在日常的办公环境 ...
- 如何判断平台工具集去做条件编译(VC++目录、预处理器定义、$(PlatformToolsetVersion))
作者:zyl910 从VS2010开始,提供了一个平台工作集(Platform ToolSet)选项用于配制vc编译版本.到了VS2012,更是因为默认平台工具集不支持WindowsXP,导致经常需要 ...
- C++及数据结构笔试面试常见知识点总结
一些常考的基础知识点个人总结,大神勿喷,欢迎指正. 1.广义表的表尾是指除去表头后剩下的元素组成的表,表头可以为表或单元素值.表尾或为表,或为空表. 2.构造函数不能声明为虚函数. 构造函数为什么不能 ...
- 3.VS2010C++相关文件说明
stdafx.h说明:stdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展).所谓头文件预编译,就是把一个工程(Proj ...
- 坑爹的libxml2 for mingw 编译
按照官方的readerme.txt说法生成Makefile之后,你会发现编译时候需要创建几个文件夹. 还有就是因为宏定义问题,报错,需要在config.h中加入#define HAVE_STDINT_ ...
- Win32中常用消息
一 .WM_PAINT消息 1 WM_PAINT的产生 由于窗口的互相覆盖等,产生需要绘制的区域,那么会产生WM_PAINT消息. 一般情况下,不直接发送WM_PAINT消息,通过API声明需要绘 ...
- 关于VS2008中的targetver.h文件
targerver.h文件的作用: 定义程序运行的环境,如限制程序只能在XP下运行,限制程序在只能在Vin7下运行 或限制程序只能在XP以上系统运行,或限制程序只能在Server2003以上系统运行. ...
随机推荐
- 学习练习 使用Servlet实现用户注册功能
package com.hanqi.www; import java.io.IOException; import javax.servlet.ServletException; import jav ...
- javascript设计模式-享元模式
享元模式采用一个共享来有效的支持大量细小粒度的对象,避免大量有相同内容的类的开销(如内存耗费),共享一个元类. 应用场景:页面存在大量的资源密集型对象:他们具备一些共性,可以分离出公共操作的数据. 一 ...
- ibatis 改下数据库连接
<!--<dataSource name="iBatisNet" connectionString="data source= DESKTO ...
- JAVA语法细节(1)
1.变量的作用域 变量的作用域从变量定义的位置开始,到变量所在的那对大括号结束.变量定义内存开辟一块空间用于该变量,变量到达作用域时,该变量从内存中消失. 2.变量的数据类型 变量基本数据类型:byt ...
- solr5.5教程-tomcat布署
tomcat和solr在各自官网下载,版本如下: tomcat版本:8.0.24 solr版本:5.5.0 1.solr解压后,目录结构如下: 2.tomcat的webapps里新建solr目录, 把 ...
- C语言文法 改
<程序> -> <外部声明> | <程序> <外部声明> <外部声明> -> <函数定义> | &l ...
- Unieap3.5-禁用Form表单中的全部标签
var form=unieap.byId('customerForm'); var children=form.getDescendants(); dojo.forEach(children,func ...
- 【UEditor】远程上传图片到【七牛云存储】
杂谈:最近在玩一个第三方的微信开发平台,里面的图片都是上传到[七牛云存储]的,用了一下非常的好用,支持各种语言,SDK齐全.支持全分布式系统架构以及存储技术和数据加速,于是决定将网站的图片都存储到七牛 ...
- 十五、struts2中的拦截器(框架功能核心)
十五.struts2中的拦截器(框架功能核心) 1.过滤器VS拦截器 功能是一回事. 过滤器是Servlet规范中的技术,可以对请求和响应进行过滤. 拦截器是Struts2框架中的技术,实现AOP(面 ...
- ADO.NET中的Connection详解
连接字符串 1.写法一 "Data Source=服务器名; Initial Catalog=数据库; User ID =用户名; Password=密码; Charset=UTF8; &q ...