b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

应用软件发生异常 下一代VC运行时库系统 the Universal CRT

电脑杂谈  发布时间:2018-02-09 14:42:11  来源:网络整理

cf0xc0000417错误原因_应用软件发生异常_dnfexe应用程序错误

原帖地址:

现在重新整理在博客上,以方便保存。

本人从2002年开始订阅《程序员》,惊闻以后不会有纸质版,甚为惋惜。希望《程序员》杂志以后能坚持走下去。

其实the Universal CRT(通用C运行时库)已经不能算是“下一代”,因为它已经在前两年伴随着Visual Studio 2015和Windows10发布。但是由于之前使用VS2015开发的应用还较少,关注的人也少,相关的文章更少。所以笔者想干脆用一篇文章,深入浅出的介绍一下Universal CRT

CRT,也就是“C Runtime”,中文译为:C运行时。我们一直称为C Runtime Library(C运行时库)。它主要负责实现C程序在运行时的各种抽象功能实现。应用软件发生异常不同的C编译器会有不同的具体实现程序,比如Windows下常见的微软的VC编译器的msvcrt.dll;GCC/Glibc的crt0.o、crti.o等。具体到二进制表现形式,可以是动态库,也可以是静态库。

CRT一般会至少负责以下功能:

实现C库函数。比如:printf、fopen等

初始化程序启动所需要的一些功能

异常处理

多线程处理

CRT也可以看成是一个操作系统抽象层。大家都知道,每一种操作系统都有自己的API或者是系统调用。像C语言之所以能够跨平台(代码级),就是因为我只需要用C库函数写程序,CRT会转化为相应平台的具体实现的API来处理。

CRT

下面我们要着重讨论的是Windows下的开发工具Visual C++配套的CRT,以下将统称为“VC运行时库”。

阶段 特性版本 特点

(注:上表中的划代是作者自己的划代方式)

我记得我最早学C语言还是上大二(2002年)的时候,那时可是VC的黄金年代。额~~应该说是年代。大家都在学习VC++6.0,一个堪称经典的版本。VC++6.0是为了配合Windows98的应用软件开发而发布的,发布的年代也差不多就是98年前后,所以内部有些文件又称之为VC98。

到这个时候,VC运行时库文件只有一个叫msvcrt.dll的,一般在c:\windows\system32下,大家发行软件产品的时候,基本上不需要考虑是否需要带个什么库,因为默认操作系统都会自带的。

逐渐的,大家发现一个非常棘手的问题,那就是随着功能的增多,不同版本的msvcrt.dll支持的功能和函数不同,版本的识别和兼容成了难题。当时很多安装包为了自己的需要,会不停的覆盖系统的msvcrt.dll,导致运行不稳定。如果把WinXP系统的msvcrt.dll覆盖了Win98的,那会导致WinXP不稳定。所以后来就发展除了第二代的CRT。

自从微软发布Visual Studio.Net 2002/2003开始,为了解决日益增长的功能和DLL版本兼容性问题,微软给现有的运行时库加上了版本号,并且把运行时库拆分为多个文件,比较常见的是msvcrXXX.dll和msvcpXXX.dll。其中XXX是版本号。

cf0xc0000417错误原因_dnfexe应用程序错误_应用软件发生异常

版本号的定义和文件命名如下表所示:

Visual Studio版本 VC运行时库版本 用于dll命名的编号

其中msvcrXXX.dll(注意不是msvcrtXXX.dll)一般负责实现C语言的基础特性,如程序启动、异常处理、库函数等功能。msvcpXXX.dll负责标准C++库的相关实现。大家可以看看其中的导出函数就能明白。

在这一阶段中,开发者想要发布软件产品,就必须确保目标计算机上必须已经安装了相应版本的运行时库。一般情况下,微软推荐大家使用运行时库安装包来进行安装。对于大型软件为了预防万一,都会附带vcredist.exe安装包。但是这种方法很不受待见。因为现在大多数软件都是通过互联网进行分发,对安装包大小很敏感。每次打包附带一个运行时库包,既增加了用户的下载时间,又增加了推广成本。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-68942-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 水田山葵
      水田山葵

      你真的是不要脸

    • 曾几
      曾几

      可口可乐需要创新什么东东呀

    热点图片
    拼命载入中...