如何减少VB6编译的可执行文件的大小?

如何减少VB6编译的可执行文件的大小?,vb6,compilation,exe,Vb6,Compilation,Exe,我的VB6程序目前编译为6MB的可执行文件。我想这不是今天机器的真正问题,但我想把它减少到1兆字节以下 最好的方法是什么 注意:我已经尝试过对小代码进行优化。这实际上增加了EXE到16MB 如果解决方案是将部分代码分离到单独的DLL中,那么最好的方法是什么?您是否应该将所有表单保留在EXE中,并将所有类和模块放在DLL中?我怎么知道是什么原因导致EXE如此之大?如果您正在编写任何新代码,那么您真的应该为VB.Net编写 相对于VB6,VB.Net的许多优点之一是在.Net运行时中内置了大量现成的

我的VB6程序目前编译为6MB的可执行文件。我想这不是今天机器的真正问题,但我想把它减少到1兆字节以下

最好的方法是什么

注意:我已经尝试过对小代码进行优化。这实际上增加了EXE到16MB


如果解决方案是将部分代码分离到单独的DLL中,那么最好的方法是什么?您是否应该将所有表单保留在EXE中,并将所有类和模块放在DLL中?我怎么知道是什么原因导致EXE如此之大?

如果您正在编写任何新代码,那么您真的应该为VB.Net编写

相对于VB6,VB.Net的许多优点之一是在.Net运行时中内置了大量现成的代码,这导致了相应较小的.exe


除此之外,有一件事可能会导致大的.exe的是使用大量的位图。你可能想看看那是不是罪魁祸首。如果是这样的话,您只需在运行时加载图像,就可以大大减少文件大小。

最有可能的问题不是您的代码,而是资源。例如,您可能在某种形式的picturebox控件中放置了一个大图像。图像保存为未压缩的位图,这是造成EXE大小的原因。如果这是您的问题,请将图像移出应用程序并放入外部JPG


另一个例子是,如果应用程序中有一组报告,并且每个报告的页眉/页脚都有公司徽标。将徽标集中在其他位置,并通过助手方法访问它。

6 mb对于vb6应用程序来说似乎很大。 应用程序中可能有一些声音或图像资源

对于图像。。。使用一些实用工具,如Photoshop来缩小尺寸。
还可以在运行时加载图像。这应该给你一个更小的exe,我必须说,编译成p代码,它应该在Make选项卡的某个高级选项中。它将我的EXE从700 KB减少到200 KB,这是一个很大的区别。然后,按照其他人的建议减少图像/声音/其他资源

另外,检查你的图标!有些图标的每个图标最大可达250KB,如果您有多个表单,其中包含多个不同的图标,那么这些图标可以相加。一个典型的现代图标大约为50 KB,但可能更大,因为不同的颜色和显示设置存储了不同的图标分辨率,因此在一个icon.ico文件中,您将有4个图标图像用于高分辨率图形显示,另外4个用于较低的256位彩色图形显示,另外4个用于16位彩色图形显示,等等。对于一个表单,您可能最终在一个.ico文件中拥有16-20个图标图像。您可以删除图标图像,如一系列gif图像中的静态图片,在这种情况下,可以逐帧或逐图标图片删除图标图片,也可以删除16位和256位颜色选项

现在,根据我的下一个建议,使用IF指令删除应用程序中任何用户永远看不到的调试/报告文本最终用户不需要的字符串和/或用于测试/调试或报告的最终用户不需要的任何附加函数。。。您可以使用IF指令删除所有这些内容。通过在“属性”窗口中设置一个常量布尔值,可以一次性打开/关闭所有IF指令条件编译参数,有关这方面的更多信息,请参阅我的一篇关于IF指令和文件大小的文章:,有许多很棒的StackOverflow帖子描述了如何使用IF-THEN-ELSE-END-IF指令进行条件编译,只需搜索即可

最后,我的最后一个建议是,在仅使用p代码编译将文件大小减少3到4倍之后,可以使用一个像样的EXE压缩器将文件大小再减少3到4倍!所以,只要使用p-code和exe压缩,我敢肯定,您就可以将6MB文件压缩到600KB以下,而无需进行任何其他与IF指令、图标文件和其他图像/声音资源相关的优化。由于p代码编译与压缩无关,通过添加exe压缩,您可以在不丢失.exe扩展名的情况下大幅减少文件大小。通过使用一个好的压缩器,我并不是说要将它更改为.zip文件或.rar文件或任何东西。压缩后,它仍将保持为.exe,同时也会被压缩,人们可以正常运行并使用它,而不会注意到任何差异,因此,一旦执行了exe,它就会在内存中解压并加载到内存中,并且当您关闭应用程序时,文件大小不会发生任何变化,小而压缩。PECompact GUI版本是一个很好的选择,甚至可能在一些torrent大小上可用,+对于这样做的程序,有几个免费选项

总而言之,从VB6“使选项卡高级/编译”执行p代码编译 第二节,看看区别。然后进行每一次优化,重新编译并记录文件大小的差异,您将很好地了解每次更改的影响。重复此操作,直到您尝试了所有选项。最大的区别将来自p代码编译和exe压缩。当然,您应该在p-code和压缩选项之后尝试参考资料/图标/IF指令,因为p-code和压缩是最简单的,并且最有可能将文件大小减少到原始大小的10%,即10倍的差值

最后,让我知道你们相处得如何,我现在很好奇结果如何。此外,p-code在所有具有visual basic运行时的位置/PC上运行,因此实际上没有问题。他们说p代码的运行速度比普通编译代码慢一点,但差别太小,根本不明显。考虑到现在PC的速度太快了,运行速度的差异比VB6第一次出现时更难被注意到,所以我真的认为它是最终极的免费午餐,尤其是如果文件大小对你很重要的时候。
让我知道进展如何,或者如果你有任何其他问题。干杯。

你可以试试这个压缩机


保护并压缩Vb6 exe文件。

尝试此压缩程序:。它免费且快速。

VB6确实没有继续开发,但微软表示,即使Win8也将支持VB6应用程序。为了准确起见:不再支持VB6 IDE,但完全支持VB6运行时。有关详细信息和参考资料,请参阅我们的。此外,如果exe已经是6兆字节,那么建议在VB中从头开始就有点晚了。我不会担心大小。将代码拆分为DLL是一个好主意,因为它使项目更易于管理。将其拆分为逻辑上独立的块,而不是试图使每个块具有特定的大小。你不认为6MB对于EXE来说太大吗?就个人而言,我不会担心大小。它真的会引起问题吗?现在6兆字节已经不多了,不管你考虑的是磁盘空间、下载时间还是其他什么。但你可能希望将代码拆分以使其更易于管理。我知道这不会造成任何问题,但当我看到商业应用程序(如VS)的前男友小于半MB时,我确实有点担心。如果你是指Visual Studio,则伴随的依赖项是数百MB。那为什么要担心呢?我也这么说。如果不确定大小,请检查项目文件夹中.frx和.res文件的大小。