![]() |
1
2
一个简短的答案是,MSVS C/C++运行时实现了诸如MalC/Cype、STDIO、IoSoW之类的功能,以及一些类似C++的东西,如DyrimeSkyCube和异常处理。这在visual studio的不同版本之间是不同的,因此不同版本有不同的运行时。 Windows主要使用C API(Win32 API),它与C/C++标准库有很大的不同。MSVC/C/C++运行时调用这个API来分配内存等。 (我想Windows中的一些应用程序是用MSV和C++编写的,所以它们确实包含了那个版本的MSVS运行时。) 此外,随着新的Visual Studio版本的发布,运行时也会发生变化。Windows版本的持续时间要长得多。 |
![]() |
2
6
这是一个过于简单化的说法,但它会给你提供要点。是一组实现C++语言部分的DLL。功能如下
每个用特定编译器编译并动态链接到C++运行时的程序必须以某种方式存在。 正确的版本 目标计算机上的CRT二进制文件。因此,交付给最终用户的应用程序通常是(通常是?)还附带了这些dll的包。这个包被称为“redistributable”(或“redist”),对于精确的编译器版本和目标平台的每个组合都有不同的包。例如,对于以下每一项,都有单独的和不同的重新发现:
等等。 是的,Windows通常会“附带”一些CRT版本。但是,它附带了运行Windows附带的应用程序所需的版本。如果Windows及其所有应用程序都是在MSVC8 SP2中编译的,而您的应用程序是在MSVC10中编译的,则CRT 你 require不会仅仅因为运行Windows而出现在框中。 这就是为什么它通常将应用程序与redist一起发布的原因。 编辑:通过胡迪尼喜欢的魔术,我预测你的下一个问题将是“我在哪里得到的重新发现?” 答案是,来自微软。尝试谷歌搜索“msvc 9 x64 redist”,你会发现: |
![]() |
3
2
它们是实现C和C++标准库函数的库。标准功能,如
核心Windows库只提供系统调用的接口,即
Win32 API
,因为这就是构建功能齐全的Windows应用程序所需的全部内容。VC++库主要是这个API周围的包装,类似于
举个例子,
|
![]() |
4
2
用Visual C++编译的程序需要一个“运行时”——这是一个处理应用程序启动/关闭、内存分配/分配、支持读写文件等的代码。 这不是操作系统的一部分,而不是最终应用程序的一部分——因为所有C++应用程序都可以共享它,默认情况下,运行时是一个单独的安装。 此外,VisualC++的每个版本都有自己的运行时安装程序,因为每个版本在所有这些工作方式上都有细微的差别和改进。对于不同的平台(如x86和x64),运行时也有不同的版本 因此,可以从Microsoft下载许多“Visual Studio XXXX运行时安装程序(YYY)”,其中XXXX是Visual Studio版本(2005、2008、2010等),YYY通常是“x86”或“x64”。 大多数需要运行时的应用程序都会在需要时自动安装它,因此最终用户通常不太了解这些可再发行软件。 |