我正在使用rad studio 2010 cpp builder。我创建了一个新的SDI应用程序,添加了一个TCppWebBrowser控件和一个简单的按钮,onclick触发了TCppWebBrowser的.navigate,我编译了它,我得到了一个1.20mb的文件,我预计至少不到700kb。
如何减少已编译exe的大小?
我不想使用“使用运行时包构建”,我知道这将使它非常小但我想在exe中获得所有必需的包和依赖项但是我可能得到的比我使用的更多,我尝试取消选中/删除大量的设计包(在项目/选项/包中)我没有使用,但文件大小没有减少。
另外我想也许RAD Studio附带的TForm组件给了我比我需要的更多的东西,这可能会使文件更大,我的意思是我只需要删除web浏览器控件和表单中的几个按钮,也许我可以使用一个最小的表单组件来替换TForm。
我知道我可以使用像upx这样的包装工,但我还是希望在包装之前将尺寸缩小一半。
任何建议都将受到赞赏。
答案 0 :(得分:2)
this thread有一些建议:
答案 1 :(得分:1)
调试版本往往比版本版本大得多。如果您没有进行调试构建,您可能会考虑“剥离”您的可执行文件,以删除已附加到二进制文件的最后信息数据痕迹。
答案 2 :(得分:1)
如果你真正想要的是一个小的可执行文件,那么你真的不应该使用VCL框架。如果需要低文件大小,则应直接使用Windows API。这将避免框架的开销。除非您使用该库的每个功能,否则无论您使用何种框架,您最有可能会遇到一些开销。像VCL这样的框架的整个想法不是生成小的可执行文件,而是为了让程序员更容易,更快地开发应用程序。
除了考虑框架更改(或删除)之外,还应考虑一些事项。请注意,尽管许多这些技术可能会对已编译的可执行文件的性能产生负面影响。选择不使用框架可能会让你处于一种情况,你可能需要重新发明轮子 - 可以这么说 - 让你的代码更容易受到错误的影响。因此,在选择这条道路之前,要考虑后果。
您可以考虑使用像UPX这样的可执行打包程序,这会减少可执行文件的大小,但会对性能产生影响。
您可以使编译器针对较小的文件大小进行优化,而不是更快的可执行文件。
如果你真的迫切需要一个小的可执行文件,那么除了不使用VCL框架之外,你应该考虑不使用RTL并动态链接许多所需的功能,如内存分配等。你可以找到一个很好的指南如何要做到这一点:Techniques for reducing Executable size在该页面上实际上有很多有用的提示,但其中一些已经在答案中提到了。
但最重要的是,当你需要非常小的可执行文件时,你不应该使用任何更大的框架。 VCL在易用性和可扩展性方面具有巨大优势,但它不是节省空间。
答案 3 :(得分:0)
看起来你的首选图书馆应该受到责备。如果您的库是应用程序中最大的组件,那么您可以做的很少 - 最简单的解决方法是使用另一个库。