多年来,我的应用程序已经从1MB增长到25MB,我预计它将进一步增长到40,50 MB。我不使用DLL,但把所有东西放在这个大的可执行文件中。
拥有一个大的可执行文件有一定的优势:
>在客户端安装我的应用程序真的是:复制并运行。
>升级可以轻松地压缩并发送给客户
>没有冲突的DLL的风险(客户具有EXE的版本X,但DLL的版本Y)
大EXE的最大缺点是连接时间似乎呈指数增长。
另外一个问题是代码的一部分(我们说约40%)与其他应用程序共享。再次,优点是:
>混合不正确的DLL版本没有风险
>每个开发人员都可以对通用代码进行更改,从而加快开发速度。
但是再次,这对编译时间(每个人都在PC上重新编写通用代码)和链接时间都有重大的影响。
问题Grouping DLL’s for use in Executable提到将DLL混合在一个可执行文件中的可能性,但是它似乎仍然需要您在应用程序中手动链接所有功能(使用LoadLibrary,GetProcAddress,…)。
你对可执行文件的大小,DLL的使用以及易于部署和简单/快速开发之间的最佳“平衡”有什么看法?
单个可执行文件对可维护性有很大的积极影响。调试,部署(将问题放在一边)并在现场进行诊断变得更加容易。正如你所指出的,它完全回避DLL的地狱。
最简单的解决方案是使用两种编译模式,一种用于生成一个单独的exe,另一个用于构建大量用于开发的小型DLL。