Windows环境下exe、lib、dll文件怎么确定自己选择哪个版本c运行时库的

本文介绍了Windows环境中C运行时库mscrt.dll的不同版本,包括静态库和动态链接库,以及单线程和多线程版本。重点讨论了多线程库为解决全局变量冲突和同步问题所做的改进。同时,提到了C运行时库在程序启动时的角色,如全局变量初始化和入口函数的设置。编译时,VC++会根据设置自动链接对应的运行时库文件。
摘要由CSDN通过智能技术生成

Windows环境下,c运行时库mscrt.dll,会有多个版本。
Run-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。

我们一般使用的Run-Time Library是C Run-Time Libraries,当然也有Standard C++ libraries。

C Run-Time Libraries实现ANSI C的标准库。VC安装目录的CRT目录有C Run-Time库的大部分源代码。

C Run-Time Libraries有静态库版本,也有动态链接库版本;有单线程版本,也有多线程版本;还有调试和非调试版本。

运行时库是程序在运行时所需 要的库文件,通常运行时库是以LIB或DLL形式提供的。C运行时库诞生于20世纪70年代,当时的程序世界还很单纯,应用程序都是单线程的,多任务或多 线程机制在此时还属于新观念。所以这个时期的C运行时库都是单线程的。

随着操作系统多线程技术的发展,最初的C运行时库无法满足程序的需求,出现了严重的问题。C运行时库使 用了多个全局变量(例如errno)和静态变量,这可能在多线程程序中引起冲突。假设两个线程都同时设置errno,其结果是后设置的errno会将先前 的覆盖,用户得不到正确的错误信息。
因此,Visual C++提供了两种版本的C运行时库。一个版本供单线程应用程序调用,另一个版本供多线程应用程序调用。多线程运行时库与单线程运行时库有两个重大差别:
(1)类似errno的全局变量,每个线程单独设置一个;
这样从每个线程中可以获取正确的错误信息。
(2)多 线程库中的数据结构以同步机制加以保护。
这样可以避免访问时候的冲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值