0

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

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

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

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

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

任何建议将不胜感激。

4

4 回答 4

2

这个线程有一些建议:

于 2010-05-16T04:54:53.593 回答
1

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

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

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

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

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

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

于 2010-05-17T00:37:32.410 回答
1

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

于 2010-05-16T03:17:58.427 回答
0

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

于 2010-05-16T03:57:14.620 回答