运行时库ML\MT\MD的区分和优劣
来源:互联网 发布:阿里云多个域名备案 编辑:程序博客网 时间:2024/06/09 06:50
VC项目属性→配置属性→C/C++→代码生成→运行时库 可以采用的方式有:多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)、单线程(/ML)、单线程调试(/MLd)。
其中以小写“d”结尾的选项表示的DEBUG版本的,没有“d”的为RELEASE版本。大型项目中必须要求所有组件和第三方库的运行时库是统一的,否则将会出现LNK2005井喷。
单线程运行时库选项/ML和/MLd在VS2003以后就被废了。
/MT和/MTd表示采用多线程CRT库的静态lib版本。该选项会在编译时将运行时库以静态lib的形式完全嵌入。该选项生成的可执行文件运行时不需要运行时库dll的参加,会获得轻微的性能提升,但最终生成的二进制代码因链入庞大的运行时库实现而变得非常臃肿。当某项目以静态链接库的形式嵌入到多个项目,则可能造成运行时库的内存管理有多份,最终将导致致命的“Invalid Address specified to RtlValidateHeap”问题。另外托管C++和CLI中不再支持/MT和/MTd选项。
/MD和/MDd表示采用多线程CRT库的动态dll版本,会使应用程序使用运行时库特定版本的多线程DLL。链接时将按照传统VC链接dll的方式将运行时库MSVCRxx.DLL的导入库MSVCRT.lib链接,在运行时要求安装了相应版本的VC运行时库可再发行组件包(当然把这些运行时库dll放在应用程序目录下也是可以的)。 因/MD和/MDd方式不会将运行时库链接到可执行文件内部,可有效减少可执行文件尺寸。当多项目以MD方式运作时,其内部会采用同一个堆,内存管理将被简化,跨模块内存管理问题也能得到缓解。
结论:/MD和/MDd将是潮流所趋,/ML和/MLd方式请及时放弃,/MT和/MTd在非必要时最好也不要采用了。
- 运行时库ML\MT\MD的区分和优劣
- /MD, /MDD, /ML, /MT,/MTD(使用运行时库)
- /MD, /MDD, /ML, /MT,/MTD(使用运行时库)
- /MD, /MDD, /ML, /MT,/MTD(使用运行时库)
- 关于VS运行时库的选择(MDd,MD,MTd,MT,ML,MLD的使用)
- vs 运行时库的选择 md /mdd /ml /mt/mtd
- /MT /MD /ML /MTd /MDd /MLd 的区别(C 运行时库)
- /MT /MD /ML /MTd /MDd /MLd 的区别(C 运行时库)
- VS的ML、MT和MD
- md /mdd /ml /mt/mtd vs运行库
- (转)VC运行库MD /MDd /MT /MTd /ML /MLd
- C运行时库(C Run-Time Libraries /MD/ML/MT)
- VC多线程C运行时库 /ML /MLd /MT /MTd /MD /MDd
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- Eclipse运行Tomcat8源码
- C语言练习篇-4河内之塔
- listview抢焦点
- hdu 1009 贪心
- 第十四周——阅读程序(1)
- 运行时库ML\MT\MD的区分和优劣
- hadoop & hive任务优化之map个数的影响因子
- HDOJ 2052 Picture(暑期练习)
- SQL Server 链接服务器(Oracle,DB2)
- java中字符串与字符数组之间的转换
- Qt 串口通信
- 第11周项目2- 点-圆-圆柱类族的设计存储班长信息的学生类
- 24点
- 深度学习系列文章之四:ubantu系统下MATLAB安装