VC++运行库和运行期检查
2020-01-18 本文已影响0人
mozartghot
VC编译器的支持库DLL
支持库 | 发布版 | 调试版 |
---|---|---|
VC6编译器的C运行库DLL | VSVCRT.DLL | VSVCRTD.DLL |
VC6编译器的C++运行库DLL | VSVCP60.DLL | VSVCP60D.DLL |
VC7编译器的C运行库DLL | VSVCR71.DLL | VSVCR71D.DLL |
VC7编译器的C++运行库DLL | VSVCP71.DLL | VSVCP71D.DLL |
VC8编译器的C运行库DLL | VSVCR80.DLL | VSVCR80D.DLL |
VC8编译器的C++运行库DLL | VSVCP80.DLL | VSVCP80D.DLL |
Lib文件
文件名 | 大小 | 用途 |
---|---|---|
libcmt.lib | 7,716,360 | 静态链接C运行库,mt的含义是多线程支持 |
libcmtd.lib | 9,758,380 | 静态链接调试版本的C运行库 |
libcpmt.lib | 4,991,534 | 静态链接标准C++类库 |
libcpmtd.lib | 6,703,474 | 静态链接调试版本的标准C++类库 |
msvcrt.lib | 939,484 | 动态链接C运行库 |
msvcrtd.lib | 974,050 | 动态链接调试版本的C运行库 |
msvcprt.lib | 1,480,525 | 动态链接标准C++类库 |
msvcprtd.lib | 1,623,976 | 动态链接调试版本的标准C++类库 |
msvcmrt.lib | 967,418 | 以混合方式链接C运行库,m的含义是mixed的 |
msvcmrtd.lib | 1,004,566 | 以混合方式链接调试版本的C运行库 |
msvcurt.lib | 5,958,948 | 生成纯托管代码,urt的含义是Universal Runtime |
msvcurtd.lib | 6,632,868 | 生成调试版的纯托管代码 |
EXE模块的入口函数一览
用户入口函数 | CRT入口函数 | 应用 |
---|---|---|
main | mainCRTStartup | 控制台应用 |
wmain | wmainCRTStartup | 宽字符的控制台应用 |
WinMain | WinMainCRTStartup | Win32应用程序 |
wWinMain | wWinMainCRTStartup | 宽字符的Win32应用程序 |
自动的运行期检查
以下几个编译器开关用来控制运行前检查功能。
/RTCs
栈检查
/RTCu
局部变量检查
/RTCc
数据赋值时的截断检查
/RTC1
相当于同时设置了 /RTCs
和 /RTCu
/GS
缓冲区溢出,改检查在发布版本中仍期作用
/GZ
VC6中用来启动栈指针检查功能,VS8将改开关的功能合并到 /RTCs