修改WINVER、_WIN32_WINNT和_MSC_VER
1.WINVER和_WIN32_WINNT
Visual C++已经不再支持Windows 95, Windows 98, Windows ME, Windows NT or Windows 2000。如果你的WINVER或_WIN32_WINNT宏被指定为以上这些windows版本,你必须修改该宏。当你升级用早期版本的Visual C++写的项目,可能会碰到与WINVER或_WIN32_WINNT宏相关的兼容性错误,如果这些宏被指定为不再支持的windows版本。
在Windows 95, Windows 98, Windows ME这一分支的操作系统中,Windows的定义的版本宏是_WIN32_WINDOWS。与此同时,Windows重新开发了NT系列,且其编号从NT4.0开始,经过Windows 2000,XP, Server 2003,Vista,Server2008,Win7,Win8,Win10。 在这一分支中,Windows定义的版本宏是_WIN32_WINNT。_WIN32_WINDOWS宏便被废弃了。
WINVER是_WIN32_WINDOWS或_WIN32_WINNT的别名。在SDK的sdkddkver.h中有其定义,可见WINVER<=>_WIN32_WINNT宏的值,如下图所示:
Window各个版本对应的宏值如下图所示:
由于我用的是Win7,所以显示到win7就结束了。
2._MSC_VER
_MSC_VER 定义编译器的版本。下面是一些编译器版本的_MSC_VER值。
MS VC++ 12.0 _MSC_VER = 1800 (Visual C++ 2013)
MS VC++ 11.0 _MSC_VER = 1700 (Visual C++ 2012)
MS VC++ 10.0 _MSC_VER = 1600(Visual C++ 2010)
MS VC++ 9.0 _MSC_VER = 1500
MS VC++ 8.0 _MSC_VER = 1400
MS VC++ 7.1 _MSC_VER = 1310
MS VC++ 7.0 _MSC_VER = 1300
MS VC++ 6.0 _MSC_VER = 1200
MS VC++ 5.0 _MSC_VER = 1100
在程序中加入_MSC_VER宏可以根据编译器版本让编译器选择性地编译一段程序。例如一个版本编译器产生的lib文件可能不能被另一个版本的编译器调用,那么在开发应用程序的时候,在该程序的lib调用库中放入多个版本编译器产生的lib文件。在程序中加入_MSC_VER宏,编译器就能够在调用的时根据其版本自动选择可以链接的lib库版本,如下所示。
#if _MSC_VER >= 1400 // for vc8, or vc9
#ifdef _DEBUG
#pragma comment( lib, "SomeLib-vc8-d.lib" )
#elif
#pragma comment( lib, "SomeLib-vc8-r.lib" )
#endif
#elif _MSC_VER >= 1310 // for vc71
#ifdef _DEBUG
#pragma comment( lib, "SomeLib-vc71-d.lib" )
#elif
#pragma comment( lib, "SomeLib-vc71-r.lib" )
#endif
#elif _MSC_VER >=1200 // for vc6
#ifdef _DEBUG
#pragma comment( lib, "SomeLib-vc6-d.lib" )
#elif
#pragma comment( lib, "SomeLib-vc6-r.lib" )
#endif
#endif
参考链接:https://msdn.microsoft.com/en-us/library/6sehtctf.aspx
参考链接:http://www.cnblogs.com/zhcncn/archive/2013/05/21/3091052.html
修改WINVER、_WIN32_WINNT和_MSC_VER相关推荐
- 关于关于_WIN32_WINNT的说明
在使用一些新版本的API,或者控件的新特性(比如新版的ComCtl32.dll)的时候,你可能会得到"error C2065: undeclared identifier."这个错 ...
- #error: MFC does not support WINVER less than 0x0501.
解决方法:找到stdafx.h修改WINVER为0x0501
- 使用Qt5.7.0 VS2015版本生成兼容XP的可执行程序
一.直接使用VS2012/VS2013/VS2015生成XP兼容的可执行程序 Visual Studio刚发布时没打补丁,称为RTM版,之后会陆续发布补丁,进行bug修复和功能增强.VS2010及之前 ...
- Mr.J--C语言编译错误C3861
标识符: 找不到标识符 即使使用自变量相关的查找,编译器也无法解析对标识符的引用. 备注 若要修复此错误,比较使用标识符到标识符声明的大小写和拼写. 验证范围解析运算符和命名空间using 指令的用法 ...
- VC,MFC开发技巧收集
(mainmenu->GetSubMenu (0))->DeleteMenu(i,MF_BYPOSITION); break; } } 十五.改变应用程序的图标 缺 十六.另一种改变窗口标 ...
- VC中Windows中一些宏的含义
https://www.cnblogs.com/zhcncn/archive/2013/05/21/3091052.html 1. _WIN32_WINDOWS,_WIN32_WINNT,WINVER ...
- Alphapose - Windows下Alphapose(Pytorch 1.1+)版本2021最新环境配置步骤以及踩坑说明
文章目录 1 Alphapose 2 环境配置 2.1 官方安装说明 2.2 Anaconda创建虚拟环境Alphapose 2.3 获取Alphapose仓库 2.4 安装相关依赖库 2.4.1 激 ...
- fatal error C1083: Cannot open include file: 'uxtheme.h'的解决
最近做一个系统时,苦于界面比较难看,如果自己从头做起的话,过于烦琐,便上网,寻找合适的界面库,找了多个,发现了一个比较合适的界面库GuiLib(官方网址:www.beyondata.com),这个界面 ...
- 37、记录使用 Swin Transformer主干网络去实现分类,并转化NCNN、TNN、MNN模型以及部署
基本思想:最近手中有个swim transformer模型,想移植手机端进行推理一下,随手记录一下遇到的问题涉及简单的转ncnn tnn mnn的流程性问题 一.首先我fork了大佬的代码https: ...
最新文章
- 多视图立体匹配论文分享CasMVSNet
- SQLServer中round函数
- Linux C 算法分析初步
- easyUI学习笔记二
- about-ie下模拟input file上传功能失效
- 开源/免费数学书大合集:微积分、线代、数分、抽代…数学教授分类整理,精心推荐...
- 智能仪器原理及设计C语言,智能仪器仪表课程设计.doc
- 在asp.net2.0中使用存储过程
- Spring框架IOC的实现
- 第三堂:Java程序流程控制
- Linux内核编译与安装[转]
- 拓端tecdat|R语言使用 LOWESS技术图分析逻辑回归中的函数形式
- 【AD15绘制原理图编译的一些警告的处理】
- 橙色——网页效果图设计之色彩索引
- java的duplicate用法_Java ByteBuffer duplicate()用法及代码示例
- Android-Skin-Loader换肤框架剖析
- vue 创建桌面应用
- Java计算商品的促销日期
- .NetCore支付宝支付-服务商模式(saas)
- 2015优秀邮件营销人员自我修炼指南