最近拿到一个别人的工程,是使用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宏定义问题的更多相关文章

  1. DECLARE_GLOBAL_DATA_PTR宏定义问题

    最近闲着顺便看了看6410的uboot代码,因为友善的boot对nand部分代码做了隐藏,所以干脆找了光盘里面三星原厂的uboot代码来看,因为友善的boot代码肯定也是基于厂商的代码改的,肯定可以的 ...

  2. VS2010中编写宏添加作者信息与函数注释

    这里所说的宏是指通过一系列键盘组合键和可以插入自定义内容.下面介绍怎么编写一个自己的宏: 1.在Visual Studio 2010中按Alt+F11打开宏IDE: 2.打开后选择添加模块: 3.在弹 ...

  3. 自动添加注释—VS2010宏的使用

    在敲代码的过程中类和函数都需要进行注释,但总是一遍一遍的复制粘贴觉得很是麻烦,终于找到了一个不错的解决方法:使用宏. 所谓宏,就是一些命令组织在一起,作为一个单独命令完成一个特定任务.在日常的办公环境 ...

  4. 如何判断平台工具集去做条件编译(VC++目录、预处理器定义、$(PlatformToolsetVersion))

    作者:zyl910 从VS2010开始,提供了一个平台工作集(Platform ToolSet)选项用于配制vc编译版本.到了VS2012,更是因为默认平台工具集不支持WindowsXP,导致经常需要 ...

  5. C++及数据结构笔试面试常见知识点总结

    一些常考的基础知识点个人总结,大神勿喷,欢迎指正. 1.广义表的表尾是指除去表头后剩下的元素组成的表,表头可以为表或单元素值.表尾或为表,或为空表. 2.构造函数不能声明为虚函数. 构造函数为什么不能 ...

  6. 3.VS2010C++相关文件说明

    stdafx.h说明:stdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展).所谓头文件预编译,就是把一个工程(Proj ...

  7. 坑爹的libxml2 for mingw 编译

    按照官方的readerme.txt说法生成Makefile之后,你会发现编译时候需要创建几个文件夹. 还有就是因为宏定义问题,报错,需要在config.h中加入#define HAVE_STDINT_ ...

  8. Win32中常用消息

    一 .WM_PAINT消息 1 WM_PAINT的产生   由于窗口的互相覆盖等,产生需要绘制的区域,那么会产生WM_PAINT消息. 一般情况下,不直接发送WM_PAINT消息,通过API声明需要绘 ...

  9. 关于VS2008中的targetver.h文件

    targerver.h文件的作用: 定义程序运行的环境,如限制程序只能在XP下运行,限制程序在只能在Vin7下运行 或限制程序只能在XP以上系统运行,或限制程序只能在Server2003以上系统运行. ...

随机推荐

  1. 获取oracle 里的表名与字段

    --数据库表名 SELECT distinct A.OBJECT_NAME as TAB_NAME,B.comments as DESCR FROM USER_OBJECTS A , USER_TAB ...

  2. JAR包

    1,      使用JAR文件    jar文件的全称是Java Archive File,意思就是Java档案文件,通常jar文件是一种压缩文件,与常见的ZIP压缩文件兼容,通常也被称为jar包,j ...

  3. 运用Ntop监控网络流量(视频Demo)

    运用Ntop监控网络流量 ____网络流量反映了网络的运行状态,是判别网络运行是否正常的关键数据,在实际的网络中,如果对网络流量控制得不好或发生网络拥塞,将会导致网络吞吐量下降.网络性能降低.通过流量 ...

  4. 【EF 3】浅谈ADO数据模型生成串(一):csdl,ssdl,msl分析

    导读:这段经历,真的是难以忘怀.恨得我牙痒痒,就一个字符串拼接,前前后后尽然报了不下30个错.有的错很快就能调出来,有的错调一天.两天,是真的可以的.最终总结了一下,这些错很大一部分原因是对于EF生成 ...

  5. 误删ext3的恢复方法

    1.Ext3文件系统结构的简单介绍在Linux所 用的Ext3文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分.每个文件还有一个节点,节点中包含有文件所有者, 读写 ...

  6. 设计模式-外观模式(Facade)

    简介 外观模式(Facade),将外部与内部子系统的通信通过一个统一的门面对象进行. 由两部分组成: 门面角色:供外部调用,内部可能组装了多个子系统,多个方法. 子系统角色:子系统的方法也可以直接供外 ...

  7. RocketMQ学习记录

    RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 1.能够保证严格的消息顺序 2.提供丰富的消息拉取模式 3.高效的订阅者水平扩展能力 4.实时的消息订阅机制 5.亿级消息堆积能力 ...

  8. SMTP sendMail 失败解决办法

    If you are seeing messages like this in your message log when running a process through the process ...

  9. [leetcode]_Remove Duplicates from Sorted Array II

    题目:一个有序数组,要求保证数组中的每个元素不能超过2个.  输入:A = [1,1,1,2,2,3]  输出:length = 5, and A is now [1,1,2,2,3] 思路:双指针 ...

  10. text-rendering 详解

    原文链接:http://www.feeldesignstudio.com/2013/05/text-rendering Text-rendering 属性是一个非标准属性,主要用来告诉渲染引擎(ren ...