SOUI官方论坛

 找回密码
 立即注册
查看: 2091|回复: 4

【新手入门】【咨询贴】MTd, MDd 2种代码生成方式

[复制链接]

该用户从未签到

39

主题

93

帖子

462

积分

02:00元婴期

Rank: 3Rank: 3

积分
462
发表于 2019-12-17 17:48:51 | 显示全部楼层 |阅读模式
问下,我的主程序是MTd的,主程序用的dll有的是MDd方式生成的,问下,可以这样吗?会不会有什么问题?
  • TA的每日心情
    奋斗
    2022-7-4 09:45
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    59

    主题

    588

    帖子

    5491

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    5491

    突出贡献优秀版主

    发表于 2019-12-17 17:59:52 | 显示全部楼层
    首先要护明白MT和MD有什么区别。
    MTd,MDd是相对于MT,MD的。前面是debug版本,后面是release版本。
    MT,MD是指C++运行时库CRT的链接方式。
    MT方式链接CRT,自己的DLL或者EXE里会有一份CRT代码,这样好处是运行时不需要依赖VS的CRT库,特别适合小项目。坏处是如果多个项目中有多个模块,模块之间只能传递基本数据类型,不能传递如CString, std等对象(主要是不能写对象)。
    MD方式链接CRT,所有模块共用VS的CRT库,缺点是软件发布的时候需要带上VS的CRT。优点就是所有模块共享一个CRT,程序体积可以缩小,模块之间传递参数也也可以很简单,和模块内没有什么区别。

    SOUI中一般使用MT,主要是我不喜欢依赖VS的CRT。然后SOUI的集合对象如SStringT, SArray, SList, SMap等对象都的内存申请都在同一个模块,可以在不同模块之间传递。

    该用户从未签到

    39

    主题

    93

    帖子

    462

    积分

    02:00元婴期

    Rank: 3Rank: 3

    积分
    462
     楼主| 发表于 2019-12-17 18:35:09 | 显示全部楼层
    setoutsoft 发表于 2019-12-17 17:59
    首先要护明白MT和MD有什么区别。
    MTd,MDd是相对于MT,MD的。前面是debug版本,后面是release版本。
    MT,MD ...

    坏处是如果多个项目中有多个模块,模块之间只能传递基本数据类型,不能传递如CString, std等对象(主要是不能写对象)。
    --------------------------------------------------------
    这个不是特别明白,是担心一个模块申请内存,一个模块释放内存吗?

    该用户从未签到

    39

    主题

    93

    帖子

    462

    积分

    02:00元婴期

    Rank: 3Rank: 3

    积分
    462
     楼主| 发表于 2019-12-18 09:56:41 | 显示全部楼层
    darkannie 发表于 2019-12-17 18:35
    坏处是如果多个项目中有多个模块,模块之间只能传递基本数据类型,不能传递如CString, std等对象(主要是 ...

    https://www.cnblogs.com/setoutsoft/p/3961808.html
    看下这个帖子

    该用户从未签到

    39

    主题

    93

    帖子

    462

    积分

    02:00元婴期

    Rank: 3Rank: 3

    积分
    462
     楼主| 发表于 2020-7-10 22:18:22 | 显示全部楼层
    今天再看这个帖子,setoutsoft,把东西都说的很清楚了,还很简洁,到底是大佬。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|SOUI官方论坛

    GMT+8, 2024-5-5 09:28

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表