一、C Run-time Library
Win32程序(使用Windows标准库),如果是 /MD 编译的程序,那么使用Depends.exe会发现其中需要 USER32.DLL、KERNEL32.DLL、GDI32.DLL、MSVCR80.DLL 等文件支持。像前3个DLL文件是Windows系统自带的,我们不用去考虑它(除非你在程序中使用的API,windows版本不支持)。 MSVCR80.DLL 需要注意一下的,
如果一个程序,不想再放一个 MSVCR80.DLL 文件在安装包中,可用 /MT 编译程序(静态连接)。这时就不需要这个DLL文件了.(如果有多个程序模块,还是把 MSVCR80.DLL 加上吧,这样也可减少各模块的体积。)如果程序中用到了 MFC 、ATL,可以修改项目属性配置中的“MFC、ATL的使用方式”。
=====================================================================================================================
二、Debug 和 Release 编译方式的本质区别
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
Debug 和 Release 的真正秘密,在于一组编译选项。
下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不讨论)
Debug 版本:
/MDd /MLd 或/MTd 使用Debug runtime library(调试版本的运行时刻函数库)