如何减小简单cpp应用程序的大小? (使用 RAD Studio 2010 cpp builder 编译)

问题描述 投票:0回答:4

我正在使用 rad studio 2010 cpp 构建器。我创建了一个新的 SDI 应用程序,添加了一个 TCppWebBrowser 控件和一个简单的按钮,单击即可触发 TCppWebBrowser 的 .navigate,我编译了它并得到了一个 1.20mb 的文件,我预计至少小于 700kb。

如何减小编译后的 exe 的大小?

我不想使用“使用运行时包构建”,我知道这会让它变得非常小,但我想在exe中获取所有必要的包和依赖项,但也许我得到的比我使用的更多,我尝试取消选中/删除很多我不使用的设计包(在项目/选项/包中),但文件大小没有减少。

另外我在想也许 RAD Studio 附带的 TForm 组件给了我比我需要的更多的东西,这可能会使文件更大,我的意思是我只需要在表单中删除一个网络浏览器控件和几个按钮,也许有我可以用它来替换 TForm 的最小表单组件。

我知道我可以使用像upx这样的打包器,但我仍然想在打包之前将大小减少一半。

如有任何建议,我们将不胜感激。

c++ c++builder sdi
4个回答
2
投票

这个帖子有一些建议:


1
投票

调试版本往往比发布版本大得多。 如果您不进行调试构建,您可能会考虑“剥离”可执行文件以删除附加到二进制文件的最后残留的信息数据。


1
投票

如果你真正想要的是一个小的可执行文件,那么你真的不应该使用VCL框架。如果需要小文件大小,您应该直接使用 Windows API。这将避免框架的开销。无论您使用什么框架,您很可能最终会产生一些开销,除非您使用该库的每一个功能。像 VCL 这样的框架的整体理念不是生成小型可执行文件,而是让程序员能够更轻松、更快速地开发应用程序。

除了考虑框架更改(或删除)之外,您还应该考虑以下一些事项。请注意,其中许多技术可能会对编译后的可执行文件的性能产生负面影响。选择不使用框架可能会让您陷入一种情况,您可能不得不重新发明轮子 - 可以这么说 - 使您的代码更容易出错。因此,在选择这条道路之前请权衡后果。

  • 您可以考虑使用像UPX这样的可执行打包程序,这会减少可执行文件的大小,但会对性能产生影响。

  • 您可以让编译器针对较小的文件大小进行优化,而不是更快的可执行文件。

  • 如果您确实迫切需要一个小型可执行文件,那么除了不使用 VCL 框架之外,您还应该考虑不使用 RTL 并动态链接许多所需的函数,例如内存分配等。您可以在此处找到有关如何执行此操作的良好指南:减少可执行文件大小的技术该页面上实际上有很多有用的提示,其中一些提示已在此处的答案中提到。

底线似乎是,当您需要极小的可执行文件时,您不应该使用任何较大的框架。 VCL在易用性和可扩展性方面有其巨大的优势,但它并不节省空间。


0
投票

看起来你选择的库是罪魁祸首。如果您的库是应用程序最大的组件,您无能为力 - 最简单的解决方法是使用另一个库。

© www.soinside.com 2019 - 2024. All rights reserved.