1.将 /MD 选项 改为/MT 选项,最终的可执行文件就不会包含对那些VC 运行时的DLL的引用了。
2
编译选项 | 包含 | 静态链接的Lib | 说明 |
---|---|---|---|
/M D | _MT.DLL | MSVCRT.Lib | 多线程,Release,Dll版本的运行时库 |
/MDd | _DEBUG._MT_DLL | MSVCRTD.Lib | 多线程,Debug,Dll版本的运行时库 |
/MT | _MT | LIBCMT.Lib | 多线程,Release版本的运行时库 |
/MTD | _DEBUG._MT | LIBCMTD.Lib | 多线程,Debug版本的运行时库 |
3.简单的说
/MD ,表示运行时库由操作系统提供一个DLL,程序里不集成。
/MT,表示运行时库由程序集成
/d表示有没有调试版本
4.为什么选择/MD,不选/MT?
1)程序就不需要静态链接运行时库,可以减小软件的大小。
2)所有的模块都采用/MD,使用同一个堆,不存在A堆申请,B堆释放的问题。
5.为什么选择/MT,不选择/MD?
1)有些系统可能没有程序所需版本的运行时库,程序必须把运行时库静态的连接上。
2)减少模块对外界的依赖。
6.多个模块,必须选择相同的运行时库。
7.选择/MT需解决堆空间的释放问题。