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以上系统运行. ...
随机推荐
- oracle 清除当前用户的回收站
--清除当前用户的回收站:purge recyclebin; --删除表数据truncate table --查看当前用户回收站select * from user_recyclebin t;
- excel中单元格计算
首先,得明确excel中相对引用和绝对引用的概念,这里$符号起着关键作用,当在一个行或列的指示符前面加$则表示绝对引用,否则相对引用,具体: 1.相对引用,复制公式时地址跟着发生变化,如C1单元格有公 ...
- 学习练习 Java冒泡排序 二分查找法
冒泡排序: // 冒泡排序 /* System.out.println("请输入要排序的个数:"); Scanner v = new Scanner(System.in); int ...
- 深入探讨ES6生成器
如果对于ES6生成器不熟悉,请先阅读并运行下http://www.cnblogs.com/linda586586/p/4282359.html里面的代码.当你感觉掌握了基础之后,我们可以深入探讨一些细 ...
- Visual C++ 开发心得与调试技巧
自己平时收集的一些技巧与心得,这里分享出来,普及一下知识. 1.如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Releas ...
- PAT1024. Palindromic Number
//自己方法只能拿到15分后边老是又过不了的点,用了网上别人的方法,用库函数的翻转reverse(),参数分别是起始位置个结束位置,注意只能在原存储空间翻转,即比较对称时,再生请一个空间,将原来字符串 ...
- ubuntu多网卡绑定
这是最近碰到这个问题,需要将两张网卡绑定,共用一个IP,实现冗余效果.实际上linux双网卡的绑定模式有7中,而在这里常用的是 active-backup linux有七种网卡绑定模式:0. roun ...
- jquery ajax 保存讲解
jquery ajax 参数传递与数据保存实例是一款适合于初学者用的,首先我们是讲一下关于如何利用ajax +php进行数据操作,然后再详细的介绍关于jquery ajax的帮助说明. jquery ...
- What is the behavior of lnk files?
I access a files which name is "abc.doc", no doubt a lnk file "abc.doc.lnk" show ...
- CopyOnWriteArrayList
CopyOnWriteArrayList, 内部通过锁+volatile修饰的数组实现的 是一种线程安全的ArrayList,写操作时会copy一个新的内部数组出来替换掉旧 的数组.遍历操作不用加锁了 ...