1.3.2 C运行时(CRT)库
运行时库是程序在运行时所需要的库文件,通常运行时库是以lib或dll形式提供的。
Visual C++提供了两种版本的C运行时库。一个版本供单线程应用程序调用;而另一个版本供多线程应用程序调用。单线程运行时库与多线程运行时库有两个重大差别,分别如下。
类似errno的全局变量,每个线程单独设置一个,这样从每个线程中可以获取正确的错误信息。多线程库中的数据结构以同步机制加以保护,这样可以避免访问时的冲突。
Visual C++提供的多线程运行时库又分为静态链接库和动态链接库两类,而每一类运行时库又可再分为Debug版本和Release版本,因此Visual C++共提供了6个运行时库,如表1.5所示。
表1.5 Visual C++提供的C运行时库
C运行时库 |
库文件 |
Single thread(static link) |
libc.lib |
Debug single thread(static link) |
libcd.lib |
MultiThread(static link) |
libcmt.lib |
Debug multiThread(static link) |
libcmtd.lib |
MultiThread(dynamic link) |
msvert.lib |
Debug multiThread(dynamic link) |
msvertd.lib |
C运行时库除了给用户提供必要的库函数调用(如memcpy、printf、malloc等)之外,还提供了另一个最重要的功能,即为应用程序添加启动函数。C运行时库启动函数的主要功能为进行程序的初始化、对全局变量进行赋初值、加载用户程序的入口函数。