当前位置:  开发笔记 > 编程语言 > 正文

静态或动态链接CRT,MFC,ATL等

如何解决《静态或动态链接CRT,MFC,ATL等》经验,为你挑选了2个好方法。

回到90年代,当我第一次开始使用MFC时,我曾经动态链接我的应用程序并发送了相关的MFC DLL.这引起了我一些问题(DLL地狱!)而我改为静态链接 - 不仅仅是为了MFC,而是为了CRT和ATL.除了更大的EXE文件之外,静态链接从来没有给我带来任何问题 - 那么其他人是否有任何缺点?有没有充分的理由重新访问动态链接?我的应用程序现在主要是STL/Boost FWIW.



1> Kevin Laity..:

我听到的大部分答案都涉及与其他程序共享您的dll,或者在不需要修补软件的情况下更新这些dll.

坦率地说,我认为那些是缺点,而不是上行.当第三方DLL更新时,它可能会发生变化,足以破坏您的软件.而现在,硬盘空间并不像以前那么珍贵,可执行文件额外增加500k?谁在乎?

100%确定您的软件正在使用的DLL版本是一件好事.

100%确定客户不会有依赖性头痛是一件好事.

在我看来,好处远大于缺点



2> Nick..:

有一些缺点:

更大的exe大小(特别是如果您运送多个exe)

使用依赖或假设动态链接的其他DLL的问题(例如:作为静态库无法获得的第三方DLL)

DLL与独立静态链接之间的不同c运行时间(没有跨模块分配/解除分配)

没有自动服务共享组件(无法让第三方模块供应商更新其代码以修复问题而无需重新编译和更新您的应用程序)

我们为我们的Windows应用程序执行静态链接,主要是因为它允许xcopy部署,这是以无法正常工作的方式安装或依赖SxS DLL所不可能的,因为流程和机制没有很好地记录或者很容易远程处理.如果您在安装目录中使用本地DLL,它将有点工作,但它不受支持.无法通过远程系统上的MSI轻松进行远程安装是我们不使用动态链接的主要原因,但(正如您所指出的)静态链接还有许多其他好处.各有利弊; 希望这有助于列举它们.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有