Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5591|回复: 7
打印 上一主题 下一主题

VC版本与VS版本

[复制链接]

437

主题

566

帖子

2381

积分

金牌会员

Rank: 6Rank: 6

积分
2381
跳转到指定楼层
楼主
发表于 2016-1-7 23:53:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式


Microsoft Visual Studio 6.0                  VC6.0
Microsoft Visual Studio .NET 2002:   VC7.0
Microsoft Visual Studio .NET 2003:   VC7.1
Microsoft Visual Studio 2005:            VC8.0
Microsoft Visual Studio 2008:            VC9.0
Microsoft Visual Studio 2010:            VC10.0Microsoft Visual Studio 2012:            VC11.0
Microsoft Visual Studio 2013:            VC12.0






回复

使用道具 举报

1330

主题

2154

帖子

8454

积分

认证用户组

Rank: 5Rank: 5

积分
8454
沙发
发表于 2020-2-28 17:06:32 | 只看该作者
本帖最后由 Qter 于 2022-11-15 22:13 编辑

从一个外行角度看,VC/VS有3种版本号,具备一定的迷惑性:(xx表示具体的数字)
MSVC++ xx(VC版本 eg. VC6.0)
_MSC_VER xx
VisualStudio xx(VS版本 eg. VS2012)
对照关系整理如下(更新至2022.3.26):

refs:

https://www.cnblogs.com/zjutzz/p/6013783.html



VS版本 与 VC版本 的对应关系
Visual Studio 6 : vc6
Visual Studio 2003 : vc7
Visual Studio 2005 : vc8
Visual Studio 2008 : vc9
Visual Studio 2010 : vc10
Visual Studio 2012 : vc11
Visual Studio 2013 : vc12
Visual Studio 2015 : vc14
Visual Studio 2017 : vc15
Visual Studio 2019 : vc16


opencv 对 VC版本 的支持情况
opencv 2.4.10 == vc10、vc11、vc12
opencv 2.4.13 == vc11、vc12
opencv 3.4.0 == vc14、vc15
opencv 3.4.1 == vc14、vc15

回复 支持 反对

使用道具 举报

1330

主题

2154

帖子

8454

积分

认证用户组

Rank: 5Rank: 5

积分
8454
板凳
发表于 2021-6-29 21:49:03 | 只看该作者
本帖最后由 Qter 于 2021-6-29 22:25 编辑

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat"  MSVC++ 14.0  _MSC_VER == 1900 (Visual Studio 2015 version 14.0)

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars32.bat"     Visual Studio 2019 : vc16



cl.exe是Microsoft C/C++编译器

编译器:cl(cl.exe)

链接器:link(link.exe)

使用cl和link编译链接的示例

https://blog.csdn.net/huashuolin001/article/details/82384545

1.  编写源代码。创建编写文件,test.c

#include<stdio.h>

int main(void)

{

    printf("compile&&link test\n");

    getchar();

    return (0);

}

2.  编译。打开cmd窗口,进入test.c目录,执行cl /c test.c进行编译,生成test.obj文件

    FAQ:

    1) 'cl' 不是内部或外部命令,也不是可运行的程序或批处理文件。

        解决方法:将cl.exe所在路径((cl.exe位于\VC\bin))加入系统环境变量;重启cmd窗口

    2) 编译器cl找不到mspdb80.dll(mspdb1000.dll或者mspdb140.dll等,视vs版本而定),无法启动

        解决方法:找到该.dll,加入到cl.exe所在的文件夹(该动态链接库所在文件夹Common7\IDE)

    3) 链接错误,stdio.h:不包括路径集

        解决方法:执行Common7\Tools\vsvars32.bat(vsvars32.bat 文件用于设置适当的环境变量以启用命令行生成)

    注意: 执行cl test.c,会直接生成test.obj文件和test.exe文件,因为执行cl test.c在编译后会自动执行链接。因此此处为方便理解,分开执行编译和链接的过程。cl命令后的/c参数代表,只编译不链接。

3. 链接。

    link test.obj 生成test.exe文件




gcc  -g  -o -c

调试信息 输出文件名 汇编

-c 源码编译为目标代码跳过汇编和连接的步骤

一一预编译一一

拷贝include文件

替换define

宏替换

一一编译一一

把c代码转为汇编代码\语法检查

一一汇编一一

as 汇编代码转目标代码(.o)

gcc -c main.c

一一连接一一

ld 把目标文件转可执行文件


编译器:把高级语言编译为指定机器语言的工具,以高级语言编写的程序源代码为输入,产生一个包含机器代码及相关信息(包括符号表和重定位信息等)的目标文件.


-g     -Zi   生成调试信息

make  nmake

g++(gcc)  cl
回复 支持 反对

使用道具 举报

1330

主题

2154

帖子

8454

积分

认证用户组

Rank: 5Rank: 5

积分
8454
地板
发表于 2021-6-29 21:51:24 | 只看该作者
本帖最后由 Qter 于 2021-6-29 22:10 编辑

MSC    1.0   _MSC_VER == 100
MSC    2.0   _MSC_VER == 200
MSC    3.0   _MSC_VER == 300
MSC    4.0   _MSC_VER == 400
MSC    5.0   _MSC_VER == 500
MSC    6.0   _MSC_VER == 600
MSC    7.0   _MSC_VER == 700
MSVC++ 1.0   _MSC_VER == 800
MSVC++ 2.0   _MSC_VER == 900
MSVC++ 4.0   _MSC_VER == 1000 (Developer Studio 4.0)
MSVC++ 4.2   _MSC_VER == 1020 (Developer Studio 4.2)
MSVC++ 5.0   _MSC_VER == 1100 (Visual Studio 97 version 5.0)
MSVC++ 6.0   _MSC_VER == 1200 (Visual Studio 6.0 version 6.0)
MSVC++ 7.0   _MSC_VER == 1300 (Visual Studio .NET 2002 version 7.0)
MSVC++ 7.1   _MSC_VER == 1310 (Visual Studio .NET 2003 version 7.1)
MSVC++ 8.0   _MSC_VER == 1400 (Visual Studio 2005 version 8.0)
MSVC++ 9.0   _MSC_VER == 1500 (Visual Studio 2008 version 9.0)
MSVC++ 10.0  _MSC_VER == 1600 (Visual Studio 2010 version 10.0)
MSVC++ 11.0  _MSC_VER == 1700 (Visual Studio 2012 version 11.0)
MSVC++ 12.0  _MSC_VER == 1800 (Visual Studio 2013 version 12.0)
MSVC++ 14.0  _MSC_VER == 1900 (Visual Studio 2015 version 14.0)
MSVC++ 14.1  _MSC_VER == 1910 (Visual Studio 2017 version 15.0)
MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3)
MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5)
MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6)
MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7)
MSVC++ 14.15 _MSC_VER == 1915 (Visual Studio 2017 version 15.8)
MSVC++ 14.16 _MSC_VER == 1916 (Visual Studio 2017 version 15.9)
MSVC++ 14.2  _MSC_VER == 1920 (Visual Studio 2019 Version 16.0)
MSVC++ 14.21 _MSC_VER == 1921 (Visual Studio 2019 Version 16.1)
MSVC++ 14.22 _MSC_VER == 1922 (Visual Studio 2019 Version 16.2)

如何确定你自己电脑上的vs的_MSC_VER,打开命令行,切换工作目录到对应版本下的VC\bin[color=rgba(0, 0, 0, 0.75)], 并且输入cl /?
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.27.29110\bin\Hostx64\x64\cl.exe
  1. λ cl /?
  2. 用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.27.29111 版
  3. 版权所有(C) Microsoft Corporation。保留所有权利。
复制代码



控制面板查看vc版本号


回复 支持 反对

使用道具 举报

1330

主题

2154

帖子

8454

积分

认证用户组

Rank: 5Rank: 5

积分
8454
5#
发表于 2021-6-29 21:58:56 | 只看该作者

VC++与C++的区别和联系:

1.C++是纯粹的编程语言。

2.VC++是编程环境,即平常所说的IDE(即Integrated Development Environment,是“集成开发环境”的英文缩写)。VC++只是一个编译器,或者说是一种“编译器 +源程序编辑器”的IDE。

3.VC是windows平台用来开发c++程序的工具软件,除了符合c++标准,包含c++标准类库以外,还提供了其他新的类库。例如MFC(用来进行windows平台GUI开发)。

扩展资料:

Microsoft Visual C++(简称Visual C++、MSVC、VC++或VC)是微软公司的C++开发工具,具有集成开发环境,可提供编辑C语言,C++以及C++/CLI等编程语言。

VC++集成了便利的除错工具,特别是集成了微软Windows视窗操作系统应用程序接口(Windows API)、三维动画DirectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C++ 2017。

它以拥有“语法高亮”,IntelliSense(自动完成功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。


回复 支持 反对

使用道具 举报

1330

主题

2154

帖子

8454

积分

认证用户组

Rank: 5Rank: 5

积分
8454
6#
发表于 2021-7-3 08:31:09 | 只看该作者
Visual Studio版本与ToolsVersion与工具集版本号对应版本号
Format Version(解决方案文件版本)和VS版本的对应关系:
-Visual Studio 2005 - Format Version 9.00
-Visual Studio 2008 - Format Version 10.00
-Visual Studio 2010 - Format Version 11.00
-Visual Studio 2012 - Format Version 12.00
-Visual Studio 2013 - Format Version 12.00
-Visual Studio 2015 - Format Version 12.00
ToolsVersion(.Net Framework版本)与VS版本的对应关系:
Reference: https://msdn.microsoft.com/zh-cn/library/bb383796.aspx
-Visual Studio 2008 - ToolsVersion 3.5
-Visual Studio 2010 - ToolsVersion 4.0
-Visual Studio 2012 - ToolsVersion 4.0
-Visual Studio 2013 - ToolsVersion 12.00
-Visual Studio 2015 - ToolsVersion 14.00
工具集版本号与VS版本的对应关系:
-Visual Studio 2015: V140
-Visual Studio 2013: V120
-Visual Studio 2012: V110
-Visual Studio 2010: V100
-Visual Studio 2008: V90
-Visual Studio 2005: V80
-Visual Studio 2003: V71
-Visual Studio 2002: V70
-Visual Studio 6: V60



回复 支持 反对

使用道具 举报

1330

主题

2154

帖子

8454

积分

认证用户组

Rank: 5Rank: 5

积分
8454
7#
发表于 2023-5-16 18:01:11 | 只看该作者
使用记事本打开.sln文件,


VisualStudioVersion = 17.2.32505.173
从一个外行角度看,VC/VS有3种版本号,具备一定的迷惑性:(xx表示具体的数字)
MSVC++ xx(VC版本 eg. VC6.0)
_MSC_VER xx
VisualStudio xx(VS版本 eg. VS2012)
对照关系整理如下(更新至2022.11.9):
VC 版本 _MSC_VER VS 版本 MSVC toolset version
VC6.0 1200 VS 6.0
VC7.0 1300 VS2002
VC7.1 1310 VS2003
VC8.0 1400 VS2005 80
VC9.0 1500 VS2008 90
VC10.0 1600 VS2010 100
VC11.0 1700 VS2012 110
VC12.0 1800 VS2013 120
VC14.0 1900 VS2015 140
VC15.0 [1910,1916] VS2017 141
VC16.0 [1920,1929] VS2019 142
VC17.0 [1930,) VS2022 143
refs:


Visual Studio version
_MSC_VER

Visual Studio 6.01200
Visual Studio .NET 2002 (7.0)1300
Visual Studio .NET 2003 (7.1)1310
Visual Studio 2005 (8.0)1400
Visual Studio 2008 (9.0)1500
Visual Studio 2010 (10.0)1600
Visual Studio 2012 (11.0)1700
Visual Studio 2013 (12.0)1800
Visual Studio 2015 (14.0)1900
Visual Studio 2017 RTW (15.0)1910
Visual Studio 2017 version 15.31911
Visual Studio 2017 version 15.51912
Visual Studio 2017 version 15.61913
Visual Studio 2017 version 15.71914
Visual Studio 2017 version 15.81915
Visual Studio 2017 version 15.91916
Visual Studio 2019 RTW (16.0)1920
Visual Studio 2019 version 16.11921
Visual Studio 2019 version 16.21922
Visual Studio 2019 version 16.31923
Visual Studio 2019 version 16.41924
Visual Studio 2019 version 16.51925
Visual Studio 2019 version 16.61926
Visual Studio 2019 version 16.71927
Visual Studio 2019 version 16.8, 16.91928
Visual Studio 2019 version 16.10, 16.111929
Visual Studio 2022 RTW (17.0)1930
Visual Studio 2022 version 17.11931
Visual Studio 2022 version 17.21932
Visual Studio 2022 version 17.31933
Visual Studio 2022 version 17.41934
Visual Studio 2022 version 17.51935
回复 支持 反对

使用道具 举报

1330

主题

2154

帖子

8454

积分

认证用户组

Rank: 5Rank: 5

积分
8454
8#
发表于 2025-9-6 22:45:47 | 只看该作者
新手在刚使用 Visual Studio 开发 C++ 应用程序时往往会对其版本产生困惑,包括 Visual Studio 版本、MSVC 版本、工具集版本等等。因此本文尝试给大家解释一下 Visual Studio 不同版本号的对应关系。

以 Visual Studio 2022 为例,版本信息包括:

Visual Studio 发布年份(营销版本号),例如 Visual Studio 2022
Visual Studio 的实际版本号,例如 Visual Studio 17.0
Visual C++(MSVC)版本,例如 MSVC 14.30
工具集(Toolset)版本,例如 toolset 143
编译器版本,例如 cl.exe 19.30
Visual Studio 版本
我相信大多数人首先看到的是 Visual Studio 的发布年份,因为 Microsoft 官方就是这么宣传的。例如你可以在官网下载页面看到 Visual Studio 2022、Visual Studio 2019 等等。

但其实 Visual Studio 的版本也有一个更加普遍的 major.minor 版本控制方案,主版本号会在每个发布年份递增。例如 VS 2010 是版本 10,VS 2017 是版本 15,VS 2019 是版本 16,VS 2022 是版本 17。所以,如果客户跟你说:“我用的是 15 版本”,那就意味着它是 Visual Studio 2017。

请注意,Visual Studio 版本的年份和主要版本之间没有任何关联,只是 Visual Studio 2010 恰好也是版本 10。

当然,除了主版本号,Visual Studio 还有次版本号。下表列出了目前主要版本的对应关系。

发布年份        实际版本号
Visual Studio 2017        15.0
15.3
Visual Studio 2019        16.0
16.1
Visual Studio 2022        17.0
17.1
Visual C++ 版本
Microsoft Visual C++,又名 MSVC,虽然它作为 Visual Studio 的一部分跟随 Visual Studio 一同发布,但它也有自己的版本控制方案。值得一提的是,MSVC 的主版本号表示 ABI 兼容性,这意味着使用同一主版本号 MSVC 编译的东西可以与使用相同主版本号的任意其他 MSVC 编译的东西链接(有一些限制)。

幸运的是,MSVC 的主要版本号比 Visual Studio 版本本身更少被调整。到 Visual Studio 2022 为止,微软官方都将 MSVC 的主要版本保持在了 14,而次要版本的第一个数字似乎在每个主要版本的 Visual Studio 中都有所改变。

下表列出了 Visual Studio 和 MSVC 版本的对应关系。

发布年份        实际版本号        MSVC 版本
Visual Studio 2017        15.0        14.1
15.3        14.11
Visual Studio 2019        16.0        14.20
16.1        14.21
Visual Studio 2022        17.0        14.30
17.1        14.31
链接器(link.exe)也使用 Visual C++ 版本号作为它的版本号。例如 Visual C++ 14.32,你可能会看到 link.exe 版本号为 14.32.31332.0。

C++ 工具集版本
与 MSVC 版本号密切相关的是 C++ 工具集(toolset)版本号。从微软官方的文章来看,工具集版本似乎是由 MSVC 主要版本和 MSVC 次要版本的第一位数字组成。

我整理到下面表格,方便你能看出来它们之间的关系。

发布年份        实际版本号        MSVC 版本        工具集版本
Visual Studio 2017        15.0        14.1        141
15.3        14.11        141
Visual Studio 2019        16.0        14.20        142
16.1        14.21        142
Visual Studio 2022        17.0        14.30        143
17.1        14.31        143
编译器版本
最后是编译器的版本,在这里特指 cl.exe 的版本,例如 19.16.27048。并且这个 major.minor 版本号与 _MSC_VER 宏定义相关联,这意味着你可以在源代码中检查它。例如,cl.exe 版本 19.21 对应的 _MSC_VER 宏为 1921。

你可以通过下面代码获取当前所使用的 Visual Studio 编译器的版本:

#include <iostream>

int main()
{
    std::cout << "Version: " << _MSC_VER << std::endl;
    return 0;
}
AI写代码
cpp
运行下表列出了 Visual Studio、MSVC、工具集以及编译器版本的对应关系。

发布年份        实际版本号        MSVC 版本        工具集版本        编译器版本
Visual Studio 2017        15.0        14.1        141        19.10
15.3        14.11        141        19.11
Visual Studio 2019        16.0        14.20        142        19.20
16.1        14.21        142        19.21
Visual Studio 2022        17.0        14.30        143        19.30
17.1        14.31        143        19.31
基于此关系,你可以在源代码中通过 _MSC_VER 宏来区分不同版本,例如只有在足够新的 Visual Studio 编译环境下才编译某些东西,例如 #if _MSC_VER >= 1930。

参考下面示例代码:

#include <iostream>

int main()
{
#if _MSC_VER >= 1930
    std::cout << "Visual Studio 2022" << std::endl;
#elif _MSC_VER >= 1920
    std::cout << "Visual Studio 2019" << std::endl;
#elif _MSC_VER >= 1910
    std::cout << "Visual Studio 2017" << std::endl;
#elif _MSC_VER >= 1900
    std::cout << "Visual Studio 2015" << std::endl;
#elif _MSC_VER >= 1800
    std::cout << "Visual Studio 2013" << std::endl;
#elif _MSC_VER >= 1700
    std::cout << "Visual Studio 2012" << std::endl;
#elif _MSC_VER >= 1600
    std::cout << "Visual Studio 2010" << std::endl;
#else
    std::cout << "Unknown Version" << std::endl;
#endif
    return 0;
}
AI写代码
cpp
运行小结
本文介绍了 Windows 集成开发环境 Visual Studio 令人混淆的版本号关系,横向对比了 MSVC、工具集以及编译器的版本号,并通过示例演示了如何在源代码中判断当前版本。希望对你有所帮助!
————————————————
版权声明:本文为CSDN博主「阿基米东」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lu_embedded/article/details/138359375

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2025-9-15 21:59 , Processed in 0.077507 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表