当前位置: 首页 > news >正文

编程 MD(d)、MT(d)编译选项的区别

1.各个选项代表的含义

编译选项

包含

静态链接的lib

说明

/MD

_MT、_DLL

MSVCRT.lib

多线程、Release、DLL版本的运行时库 ---只能用于Release版本

/MDd

_DEBUG、_MT、_DLL

MSVCRTD.lib

多线程、Debug、DLL版本的运行时库 ----只能用于Debug版本

/MT

_MT

LIBCMT.lib

多线程、Release版本的运行时库

/MTd

_DEBUG、_MT

LIBCMTD.lib

多线程、Debug版本的运行时库

简单的说:

(1)/MD,表示运行时库由操作系统提供一个DLL,程序里不集成。

(2)/MT,表示运行时库由程序集成,程序不再需要操作系统提供运行时库DLL。

/MT是"multithread, static version" 意思是多线程静态的版本,定义了它后,编译器把LIBCMT.lib安置到OBJ文件中,让链接器使用LIBCMT.lib 处理外部符号。

/MD是"multithread- and DLL-specific version",意思是多线程DLL版本,定义了它后,编译器把MSVCRT.lib安置到OBJ文件中,它连接到DLL的方式是静态链接,实际上工作的库是MSVCR80.DLL。

即:

静态运行时库:LIBCMT.lib

动态运行时库:MSVCRT.lib +MSVCR80.DLL

2./MD、/MT的选择

1、为什么选择/MD,不选/MT?

(1)程序就不需要静态链接运行时库,可以减小软件的大小;

(2)所有的模块都采用/MD,使用的是同一个堆,不存在A堆申请,B堆释放的问题。

2、为什么选择/MT,不选择/MD?

(1)有些系统可能没有程序所需要版本的运行时库,程序必须把运行时库静态链接上。

3、多个模块,必须选择相同类型的运行时库,不要混合使用。

3.选择/MT需要解决的堆空间释放问题

不同的模块各自有一份C运行时库代码,各个C运行库会有各自的堆,导致了各个模块会有各自的堆。如果在A堆中申请空间,到B堆中释放就会有崩溃,在模块A申请的空间,必须在模块A中释放。

附件(下载地址:http://files.cnblogs.com/cswuyg/Test_MD_and_MT.rar)的DLL以及DLLUser代码,以STL的string为例,通过修改编译选项验证了这个问题。(string在赋值的时候需要释放掉原来的空间,然后再申请新的空间存储新的内容。)

http://www.jsqmd.com/news/1282290/

相关文章:

  • 《龍魂·曲速引擎推演舱:把广义相对论做成3D交互页,我是用 Kimi 这么干的》
  • OpenModScan:免费开源的工业Modbus调试工具完整指南
  • 突发!AG KIT反重力优先智能体工程套件,功能特性与使用指南全揭秘
  • 相似三角形
  • 年轻人的代步车推荐 - 资讯在线
  • 校园定制平台Spring Boot架构设计与实现
  • 笔记四:常用布局:相对布局——RelativeLayout
  • 称最多水的容器
  • 百度页面
  • 牛客剑指Offer——从尾到头打印链表
  • JSP总结
  • gdb 开始调试开始上手
  • 龍魂本地融媒体工坊”落地指令(草案)基于梁文锋只追求AGI 的误区修正
  • 深井泵低液位自动停泵方案设计 - 水位监测系统观察员
  • 企业AI定制开发踩过的坑——交付周期凭什么能压到几周
  • Unity WebGL高性能WebSocket通信:混合事件驱动模型解析与实战
  • 深蓝G318和iCAR V27怎么选?20万级增程硬派SUV选购参考 - 资讯在线
  • docker安装shipyard
  • 157、画质竞赛与DXOMARK:评分体系拆解与针对性调优技巧
  • 5分钟找回QQ空间全部历史说说的终极指南:GetQzonehistory使用教程
  • Ryujinx模拟器终极指南:3步在PC上畅玩Switch游戏
  • 郑州今日黄金回收报价 足金金条 K 金免费鉴定 无火耗折旧费 - 奢侈品回收评测
  • 送你一篇最实用的接口测试科普文章
  • 弹幕盒子:免费在线弹幕处理终极指南
  • 【普通人AI入门指南】:3天掌握5个零代码AI工具,错过这波红利再等5年?
  • VUE脚手架搭建+Element 组件库table
  • Sunshine自托管游戏串流服务器:构建家庭云游戏的终极解决方案
  • 终极游戏音频提取指南:acbDecrypter从入门到精通
  • Dan Koe内容创作方法论:如何打造引发深度共鸣的优质内容
  • 34K Star 的 GraphRAG:微软开源的“知识图谱 + RAG“组合拳,让企业 AI 真正读懂你的私域文档