[工程构建] Windows的运行时库 Redistributable

前言:

我们在运行有msvc编译的c++程序时,都需要依赖运行时库,这些库微软已经通过exe压缩包的形式为我们提供了,而且是跟着vs版本走的,我们可以在vs的安装路径下找到这些exe,直接运行后便可以为当前计算机安装对应版本的运行时库了。很多在开发环境上编译好的程序丢到目标机器上运行时出现异常都是由于缺少运行时库导致的。

 

下载和简介:

如下链接就是vs2015的运行时库下载地址 :https://www.microsoft.com/en-us/download/details.aspx?id=11800

下载页面中的描述中这样写道:

The Visual C++ Redistributable Packages install run-time components that are required to run C++ applications built using Visual Studio 2015.

当前Visual C++ Redistributable Packages 用来安装运行时组件,那些由 Vs 2015 编译的 c++应用程序必须依赖这些组件才能正常运行。

The Visual C++ Redistributable Packages install run-time components of Visual C++ libraries. These components are required to run C++ applications that are developed using Visual Studio 2015 and link dynamically to Visual C++ libraries. These package can be used to run such applications on a computer even if it does not have Visual Studio 2015 installed. These packages install run-time components of these libraries: C Runtime (CRT), Standard C++, MFC, C++ AMP, and OpenMP.

Visual C++ Redistributable Packages用来安装Visual C++ 库的运行时组件,那些用vs2015开发的c++应用程序,以及那些使用了Visual C++ 动态库的应用程序均需要这些组件作为必要的运行时支撑。有了这些组件,这些应用程序便可以运行在任何机器上,而不要求这些机器必须安装vs2015。

这些运行时组件包括: c的运行时库(CRT)、标准c++、MFC、c++ AMP 和 OpenMP

并不是所有的操作系统都能运行所有版本的Visual C++ Redistributable Packages,具体参照下载页面的System Requires分段  https://www.microsoft.com/en-us/download/details.aspx?id=48145

 

Visual Studio 和 VC 以及 MSVC的关系

Visual Studio是一个集成IDE环境,其安装目录下包括很多内容,有VC、VB、Python、JS、VC#等等,这些都是在安装 VS的时候手工指定的。每一个目录下都是相应语言/组件的一套开发SDK。

VC便是其中一个目录,其中包括Windows环境下进行 C/C++开发的所有 SDK,这包括 库的导出库文件、库的动态库文件、库的头文件、编译器、连接器、二进制文件解析工具等等。做Windows C/C++环境下的开发,此目录可以满足我们所有需求。

我们说的MSVC 是指 VC 目录中的编译器,而其版本,一般也只编译器版本。

而VC 版本一般只 VC目录中的 C/C++ 库的版本。

VS 和 VC版本的对应关系如下:

Visual Studio 6VC6
Visual Studio 2003VC7
Visual Studio 2005VC8
Visual Studio 2008VC9
Visual Studio 2010VC10
Visual Studio 2012VC11
Visual Studio 2013VC12
Visual Studio 2015VC14
Visual Studio 2017VC15

VS 和 MSVC版本的对应关系如下(这一般用在代码里做宏定义分支判断使用):

MSVC++ 4.x_MSC_VER == 1000
MSVC++ 5.0_MSC_VER == 1100
MSVC++ 6.0_MSC_VER == 1200
MSVC++ 7.0  _MSC_VER == 1300
MSVC++ 7.1  _MSC_VER == 1310 (Visual Studio 2003)
MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005)
MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008)
MSVC++ 10.0_MSC_VER == 1600 (Visual Studio 2010)
MSVC++ 11.0_MSC_VER == 1700 (Visual Studio 2012)
MSVC++ 12.0_MSC_VER == 1800 (Visual Studio 2013)
MSVC++ 14.0_MSC_VER == 1900 (Visual Studio 2015)
MSVC++ 14.1_MSC_VER == 1911 (Visual Studio 2017)

 

Qt中的运行时库:

Windows版本的Qt组件是由相应版本的MSVC编译器编译的,因此其依赖于对应vs版本的运行时库,因此Qt在发布的时候都会把相应的vc_redist.exe一并放在bin目录下,当我们发现自己编译的Qt工程缺少运行时库时,找到相应的exe运行一下即可。

具体路径:       C:\Qt\Qt5.12.6\vcredist

例如:

 

运行时库的安装目录:

Visual C++ Redistributable Packages 的默认安装目录为:

System 、System32 、SysWOW64 

 

VS目录下也有一份运行时库:

我们可以手动运行 vcredist_xxx.exe来安装运行时库到 上述三个 SysXXX 目录下,这一般使用在那些没有开发环境的目标运行机器上。

那么,为什么我们装完VS就能自动使用这些运行时库了呢?

原来,VS在安装时自带了一份并放在自己的目录下,那么我们从VS启动程序时便不需要去SysXXX中找这些库,直接就可以使用,比如vs2017 对应的目录为:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC

为什么VS中正常启动,但是手工运行exe却失败?

但是,我们手动运行开发生成的exe时,还是会去SysXXX中找,这也是为什么有时候我们我们可以在VS环境中顺利启动程序,但是在Release 和 Debug中手动运行exe的时候确提示缺少xxx.dll的原因。

ps:

如果我们手动运行VS目录下的 vcredist_xxx.exe ,会发现 安装页面中的版本号 和 vs自带的运行库版本号 是一致的。

vs自带的运行库的路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools

vs提供的运行库安装包的路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist

这二者都在VS 安装路径的 VC目录下

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
什么是 Microsoft Visual C ++ 可再发行组件?Microsoft Visual C ++ Redistributable运行时,用于运行 Microsoft 开发人员使用 Visual C ++ 语言开发的应用程序(使用 Microsoft Visual Studio 开发环境)。您的系统上安装了许多 Microsoft 可再发行程序包。 您可以通过转到控制面板/程序/应用程序和功能来查看它们。 并且在已安装程序的列表中,您会看到 Microsoft Visual C ++ Redistributable 有多个软件包。 Microsoft Visual C++ Redistributable Package 中文版Microsoft Visual C++ Redistributable Package 中文版 VC ++ 可再发行组件就像 Java Runtime Environment 和 .NET Framework。 您需要安装 JRE 才能运行用 Java 和 .NET Framework 开发的程序,以运行使用 .NET Framework 构建的应用程序。 使用 Visual C ++ 创建某些应用程序或程序时,将自动安装可再发行组件包。一些开发人员将运行时预先打包在其软件设置中。或者,您可以手动下载它们。我为您提供了下载可再发行软件包的链接。 如果您使用同一版本的 Microsoft Visual C ++ 创建多个应用程序,则所有使用同一版本的 Microsoft Visual C ++ 创建的应用程序都需要一个可再发行组件包。 当您需要 Microsoft Visual C ++ 可再发行组件时 如果您有需要 Visual C ++ Redistributable 的任何软件或程序,那么就需要它们,否则就不会使用 Microsoft VC ++ Redistributable。 这些软件包对您的系统资源的占用不是很大,因此 Microsoft Visual C ++ Redistributable 将不会在您的系统上占用太多空间。 Microsoft Visual C ++ 特色: Microsoft Visual C ++ 可再发行组件扩展了与多媒体相关的系统功能。 它可以帮助您自动安装许多应用程序,游戏和程序所需的组件才能运行。 而以 C ++ 语言编写的应用程序,Microsoft Visual C ++ Redistributable 可帮助它们正常工作和运行。 每个 Microsoft Visual C ++ 可再发行组件包的大小均不超过 20 MB。 静默安装 您还可以在静默模式下安装 Visual C ++ 可再发行组件。 安装程序附带一个 /q 开关,可用于以静默方式运行 VC ++ 安装程序。 有两种使用 /q 开关运行安装程序的方法。 一种是创建下载的安装文件的快捷方式,并在快捷方式属性的目标字段末尾附加 /q/norestart。 大眼仔旭在这里提示大家,有些用户在安装一些软件或者运行一些游戏弹出缺少某些 Dll 文件时可能就是因为电脑上缺少 VC++ 运行导致的,这时候您就可以尝试下载安装 Microsoft Visual C ++ 运行来解决该问题。
### 回答1: Windows运行合集是指Windows操作系统中所提供的一系列动态链接(DLL)的集合。这些运行包含了各种用于支持和运行应用程序所需的函数和组件。Windows运行合集的目的是为了提供一个统一的平台,使开发者能够更方便地编写应用程序,并确保这些应用程序能够在不同的Windows版本上正确运行。 在Windows运行合集中,包含了各种常见的运行,比如.NET Framework、Visual C++ Redistributable等。这些运行提供了各种功能,比如图形界面绘制、网络通信、数据访问、多线程处理等。同时,这些运行还提供了丰富的API函数,开发者可以通过调用这些函数来实现各种操作,比如创建窗口、读写文件、显示图形等。 Windows运行合集的存在对于开发者来说具有重要意义。首先,使用这些运行可以大大简化开发过程,因为它们提供了很多常用功能的封装,开发者只需要调用相应的函数即可,而不需要自己从头实现。其次,Windows运行合集还提供了一致的编程接口,使得开发者可以在不同的Windows版本上开发应用程序,而无需对不同版本进行额外的适配。 总之,Windows运行合集是Windows操作系统中的重要组成部分,它提供了丰富的功能和API函数,可以帮助开发者更方便地编写应用程序,同时保证这些应用程序能够在不同的Windows版本上正确运行。 ### 回答2: Windows运行合集是一组为Windows操作系统开发的动态链接(DLL)的集合。它包含了许多常见的函数、类和数据结构,为开发人员提供了访问操作系统和硬件功能的接口。运行合集为开发人员简化了编程过程,并提供了许多常见任务的预制解决方案。 Windows运行合集通常包括一些核心,如C运行和C++运行。这些提供了一些基本的功能,例如内存管理、字符串操作和输入输出处理。除此之外,还会包括其他,如图形、网络和数据访问,用于处理特定的领域和功能需求。 通过使用Windows运行合集,开发人员可以避免从头开始编写所有必要的代码。相反,他们可以使用已经存在的函数来实现特定的功能。这不仅可以节省时间和精力,还可以提高代码的质量和可维护性。 在使用Windows运行合集时,开发人员需要在编译时链接这些文件。这需要确保文件在包含在最终可执行文件中,以便在运行时可以正确调用函数。 总的来说,Windows运行合集是Windows操作系统开发的重要组成部分。它为开发人员提供了一个丰富的集合,使他们能够更加高效地开发Windows应用程序,并为用户提供更稳定和可靠的使用体验。 ### 回答3: Windows运行合集是一套由Microsoft开发的软件包,用于提供Windows操作系统在运行软件时所需的必要组件和支持。它包含了各种动态链接( DLL )文件,这些文件在程序运行时被加载,为应用程序提供必要的函数和服务。 Windows运行合集的作用非常重要。它为开发者提供了所需的API(应用程序编程接口),使得开发者能够更加方便地开发Windows应用程序。无论是开发桌面应用程序、游戏还是其他软件,开发者都可以使用Windows运行合集中的组件来处理各种任务,比如图形绘制、网络通信、文件操作等。 对于普通用户来说,Windows运行合集的作用也十分关键。许多软件在安装时都会依赖于某些特定的运行,如果系统中没有这些运行的支持,这些软件将无法正常运行。Windows运行合集提供了很多常用的运行,比如Visual C++ Redistributable,.NET Framework等,它们能够帮助解决兼容性问题,保证软件的正常运行。 另外,Windows运行合集还提供了一些系统性能优化相关的功能。例如,它可以优化应用程序的内存管理,提供更高效的算法和数据结构等,从而提升整体系统的性能和稳定性。 总而言之,Windows运行合集是Windows操作系统的重要组成部分,它为开发者提供了开发应用程序所需的各种组件和接口,同时也为用户提供了正常运行各类软件所需的支持。通过不断更新和升级,Windows运行合集能够提供更好的兼容性和性能,确保系统的稳定与安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值