一个大的可执行文件或许多小DLL?

Pat*_*ick 20 deployment dll executable

多年来,我的应用程序从1MB增长到25MB,我预计它将进一步增长到40,50 MB.我不使用DLL,但把所有东西放在这个大的可执行文件中.

拥有一个大的可执行文件有一些优点

  • 在客户处安装我的应用程序实际上是:复制并运行.
  • 升级可以轻松压缩并发送给客户
  • 不存在冲突DLL的风险(客户具有EXE的X版本,但DLL的版本Y)

大型EXE的最大缺点是连接时间似乎呈指数级增长.

另外一个问题是代码的一部分(比如大约40%)与另一个应用程序共享.再次,优点是:

  • 混合使用不正确的DLL版本没有风险
  • 每个开发人员都可以对公共代码进行更改,从而加快开发速度.

但同样,这会严重影响编译时间(每个人都会在PC上再次编译公共代码)和链接时间.

分组DLL在Executable使用的问题提到了将DLL混合在一个可执行文件中的可能性,但看起来这仍然需要您在应用程序中手动链接所有函数(使用LoadLibrary,GetProcAddress,...).

您对可执行文件大小,DLL的使用以及易于部署和简单/快速开发之间的最佳"平衡"有何看法?

Mar*_*tos 14

单个可执行文件对可维护性具有巨大的积极影响.在现场调试,部署(调整大小问题)和诊断更容易.正如你所指出的,它完全回避DLL地狱.

对您的问题最直接的解决方案是使用两种编译模式,一种是为生产构建单个exe,另一种是为开发构建许多小DLL.

  • 鉴于"一个大EXE"模型列出的缺点都是针对开发人员而不是用户,这个想法很有意义. (5认同)