最近拿到一个别人的工程,是使用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. HP Mobile Center 1.01 Related System Requirements

    最近要开始使用HP Mobile Center,以下是我在官网上搜集的配置信息,包含软硬件. Reference:  http://mobilecenterhelp.saas.hp.com/en/la ...

  2. LA3027 合作网络-并查集压缩路径

    有N个结点 一次 I u v 操作表示把结点u的父结点设为v,距离为|u-v|%1000.输入保证执行指令前u没有父结点 一次E u 操作表示询问u到根结点的距离 O操作表示结束 #include&l ...

  3. android反编译工具总结

    序:总结反编译主要的目的在于学习.利用反编译进行相关的汉化或修改,都是不道德的! 大家都知道,将apk文件解压后有两部分文件需要处理,一种是xml文件,另一种一个dex文件(.dex),我们可以从.d ...

  4. CLRS:median and order statistics

    //maximum and minimum     暴力遍历 O(n) //i-th element dicide and conquer random_selected_partition     ...

  5. PAT1007

    #include<stdio.h>#include<vector>#include<algorithm>using namespace std; int main( ...

  6. mongodb replica set(副本集)设置步骤

    网上已经有一大堆的设置步骤的了,根据我遇到的问题,整理一下,如下: 首先先去下载一个mongodb最新版,目前最新版应该是2.6 cd /usr/local/bin wget http://fastd ...

  7. H264转成RGB24格式-2016.01.21

    #include "libavcodec/avcodec.h" #include "libswscale/swscale.h" #include "l ...

  8. IDL与C#混合编程技术

    C# (C Sharp)是微软公司在2000年6月发布的一种新的编程语言.C#与Java有很多的相似之处,包括了诸如单一继承.界面.与Java几乎同样的语法,和编译成中间代码再运行的过程.它又借鉴了D ...

  9. LiveView 0.8 RC1 could boot evidence files acquired from Win10 64bit

    The latest Windows 10 will be more and more popular in the very near future. Now let's take a look i ...

  10. hdu2602

    01-bag #include <stdio.h> #include <math.h> #include <string.h> int main(){ int t; ...