加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 构建DLL时;我应该链接什么类型的CRT?

发布时间:2020-12-14 05:30:22 所属栏目:Windows 来源:网络整理
导读:在窗户;有两个链接到CRT的选项: 多线程,静态链接 多线程,动态链接 有人能说清楚这里的最佳做法是什么吗?我应该“静态”链接到CRT还是进行动态链接? 如果我做一个动态链接,并且我编写了一个程序,使用我的DLL另一个第三方DLL(这是一个静态链接到CRT),这是一
在窗户;有两个链接到CRT的选项:

>多线程,静态链接
>多线程,动态链接

有人能说清楚这里的最佳做法是什么吗?我应该“静态”链接到CRT还是进行动态链接?

如果我做一个动态链接,并且我编写了一个程序,使用我的DLL另一个第三方DLL(这是一个静态链接到CRT),这是一个问题吗?

解决方法

当您在应用程序中使用DLL时,这是一个大问题. EXE和DLL使用相同的内存分配器非常重要.如果您从需要由调用者释放的DLL函数返回指针或C对象(如std :: string).要获得相同的分配器,所有模块必须使用相同的CRT实例.只有使用/ MD编译才能选择CRT的DLL版本.他们必须使用相同版本的CRT.无论如何使用/ MT会导致非常难以诊断内存泄漏,如果幸运的话,会导致访问冲突.

使用/ MT可以更轻松地部署应用程序,因为您不必安装运行时DLL.如暗示的那样,只有部署EXE才能安全.或者,当您非常小心地控制DLL的公共接口时.例如,自动兼容的COM服务器可以链接到CRT的静态版本.自动化有关于交换指针和管理内存的严格规则.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读