多年来我的应用程序已经从1MB增长到了25MB,我预计它会进一步增长到40,50 MB。我不使用DLL,而是将所有内容放在这个大的可执行文件中。一个大的可执行文件或很多小的DLL?
有一个大的可执行文件具有一定的优势:
- 我安装在客户应用程序真正做到:复制和运行。
- 升级就可以很容易地压缩和发送给客户
- 没有有冲突的DLL的风险(如客户有EXE的X版本,但DLL版本Y)
大大型EXE的缺点是连接时间似乎呈指数级增长。
另一个问题是,一部分代码(比如约40%)与另一个应用程序共享。再次,优点是:
- 有在具有不正确的DLL版本
- 每个开发人员都可以在其上加快发展的共同代码变化的组合没有风险。
但是,这又对编译时间产生了严重的影响(每个人都会在PC上再次编译通用代码)和链接时间。
问题Grouping DLL's for use in Executable提到了在一个可执行文件中混合DLL的可能性,但它看起来仍然需要您在应用程序中手动链接所有函数(使用LoadLibrary,GetProcAddress,...)。
对于可执行文件的大小,使用DLL以及简单部署和简单/快速开发之间的最佳“平衡”,您有何看法?
鉴于“一个大EXE”模型的缺点都是针对开发者而不是用户,这个想法很有意义。 – 2010-05-21 10:42:51
事实上,这就是我现在正在做的事情,但是我提出这个问题的原因是,我的印象是每个人都在使用大量的DLL,但显然,这里给出的所有答案似乎也更喜欢单一的EXE解决方案。 – Patrick 2010-05-21 15:27:30