早期的CRT在不能完全兼容多线程,多线程在使用CRT函数时(内部为使用CRT的全局变量和static变量时会出现同步错误,即两个线程操作的是同一片数据块)
后期版本生成多线程CRT()为每个线程在 CRT堆 上产生一个_tiddata的数据块,解决同步问题(windows体现为createThread和_beginThreadEx) windows standard CRT早期为 LIBCMT.LIB(多线程版本,单线程为LIB.LIB),后期多线程的为MSVCRT.LIB
CRT(c runtime library):"小内核"语言(少量关键字,程序流程控制,数据类型),含有初始化代码和错误出来代码(divide by zero),没有CRT, main()函数和exit()便不会运行。
standard CRT:C++为C的一个超集,包含了CRT和STL
import library:导入库文件, 或是引入外部lib工程
Windows环境下,VC提供的 C run-time library又分为动态运行时库和静态运行时库。
动态运行时库主要是DLL库文件msvcrt.dll(or MSVCRTD.DLL for debug build),对应的Import library文件是MSVCRT.LIB(MSVCRTD.LIB for debug build)
静态运行时库(release版)对应的主要文件是:
LIBC.LIB (Single thread static library, retail version)
LIBCMT.LIB (Multithread static library, retail version)
后期版本生成多线程CRT()为每个线程在 CRT堆 上产生一个_tiddata的数据块,解决同步问题(windows体现为createThread和_beginThreadEx) windows standard CRT早期为 LIBCMT.LIB(多线程版本,单线程为LIB.LIB),后期多线程的为MSVCRT.LIB
CRT(c runtime library):"小内核"语言(少量关键字,程序流程控制,数据类型),含有初始化代码和错误出来代码(divide by zero),没有CRT, main()函数和exit()便不会运行。
standard CRT:C++为C的一个超集,包含了CRT和STL
import library:导入库文件, 或是引入外部lib工程
Windows环境下,VC提供的 C run-time library又分为动态运行时库和静态运行时库。
动态运行时库主要是DLL库文件msvcrt.dll(or MSVCRTD.DLL for debug build),对应的Import library文件是MSVCRT.LIB(MSVCRTD.LIB for debug build)
静态运行时库(release版)对应的主要文件是:
LIBC.LIB (Single thread static library, retail version)
LIBCMT.LIB (Multithread static library, retail version)