Windows环境下exe、lib、dll文件怎么确定自己选择哪个版本c运行时库的
来源:互联网 发布:淘宝客计划管理设置 编辑:程序博客网 时间:2024/05/20 20:03
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)多 线程库中的数据结构以同步机制加以保护。
这样可以避免访问时候的冲突。
Visual C++提供的多线程运行时库又分为静态链接库和动态链接库两类,而每一类运行时库又可再分为debug版和release版,因此Visual C++共提供了6个运行时库
2.C运行时库的作用
C运行时库除了给我们提供必要的库函数调用(如memcpy、printf、malloc等)之外,它提供的另一个最重要的功能是为应用程序添加启动函 数。
C运行时库启动函数的主要功能为进行程序的初始化,对全局变量进行赋初值,加载用户程序的入口函数。
不采用 宽字符集的控制台程序的入口点为mainCRTStartup(void)。下面我们以该函数为例来分析运行时库究竟为我们添加了怎样的入口程序。这个函 数在crt0.c中被定义,下列的代码经过了笔者的整理和简化:
程序运行时,很大一部分时间是在这些运行库里运行。在程序(Release版)被编译时,VC会根据编译选项(单线程、多线程或DLL) 自动将相应的运行时库文件(libc.lib、libcmt.lib或Import library msvcrt.lib)链接进来。
预知后事,且听下回分解。
- Windows环境下exe、lib、dll文件怎么确定自己选择哪个版本c运行时库的
- Windows下exe和dll文件怎么判定自己该链接何种版本的c运行时库的研究
- windows的exe、lib文件跟c运行时库怎么关联的
- 确定用户运行的是哪个Windows版本,以及如何验证?
- Windows下的lib文件和dll文件
- exe调用lib库,lib库又调用了另一个dll 时,lib,dll该怎么放
- obj、dll、exe、lib文件的区别
- VS2008 运行VC\Bin下的link.exe, cl.exe, lib.exe提示找不到mspdb80.dll的解决方法
- VS2008 运行VC\Bin下的link.exe, cl.exe, lib.exe提示找不到mspdb80.dll的解决方法
- windows下sqlite的.dll生成.lib和c编程
- 查询Windows下的dll/exe所依赖的文件
- 创建自己的dll和lib文件
- 创建自己的dll和lib文件 .
- obj,lib,dll,exe文件
- linux环境下编译源码和运行程序时,include文件和lib库文件的注意事项
- 获取SVN版本信息更新exe,dll文件的版本信息(C++, C#)
- windows 下dll lib
- Visual C++中的C运行时库浅析(lib dll)
- 将Record 数组转成jsonstring
- 日期的计算公式
- VC++绘图:windows图形环境
- 为什么每个前端开发者都要理解网页渲染?
- VBox下扩展Ubuntu根分区大小的方法
- Windows环境下exe、lib、dll文件怎么确定自己选择哪个版本c运行时库的
- contentprovider 总结(三)
- Android SDK开发包下载地址
- 基于LabVIEW的汉字显示程序
- 【博客大赛】巧用FPGA中资源
- VS2010快捷键大全及设置
- java程序获取项目的路径
- Android仿微信/支付宝的方块密码输入框
- 我的单链表