2013-03-12 100 views
0

我的问题是,当你编译你的C++程序时,为什么它被放到一个exe文件中?该文件可能会变大。你会使用dll库来缩小尺寸,还是有其他文件可以制作?我只想知道如何制作一个使用单独文件运行的程序。C++单独的文件?

(编辑)我只是不希望它在一个单一的文件。文件最终可能会变得太大,以至于电脑无法处理它,对吗?必须有一种方法来分离文件。就像在java中一样,一切都在类文件中,这看起来更简单,更高效。某些像FAT32这样的驱动器不能有大于4千兆字节的文件,所以他们需要更多的细分程序。我看着我的游戏门户网站,它的EXE是100KB,它有大约100个DLL文件!

+0

为什么单个可执行文件会“太大”?如果没有存储资源(例如图像/媒体),那么在现代非嵌入式系统上就很难做到了。使用*逻辑*边界的动态链接:应用程序的大部分*设计*作为库,现有的第三方库,插件系统的模块等。 – 2013-03-12 20:36:17

+1

与存储或内存大小相比,我不再担心exe文件的大小。早在20世纪90年代,我确实担心这些事情。 – drescherjm 2013-03-12 20:36:42

+0

“文件最终可能变得太大,以至于计算机无法处理它”,这是非常不可能的,您将创建一个2GB可执行文件以用于32位平台。 – drescherjm 2013-03-12 20:42:25

回答

2

为什么太大?如果这是由于存储空间的限制,将其分割成多个文件不会为您购买任何东西。除非您在某种平台上溢出文件的最大大小(例如某些32位平台上的2GB限制),这似乎不太可能发生,否则您可能担心会出现问题。

您可以通过编译器关闭调试选项减少生成的可执行文件的大小,“剥离”,它在各种平台上,设置优化设置来优化代码大小,而不是执行速度等

+0

制作2MB可执行文件(没有资源或静态链接外部/运行库)甚至“难”,更不用说接近2GB了。编译器输出在空间频谱上非常密集,编写代码需要更长的时间录制视频或创建大图片。 – 2013-03-12 20:42:07

+0

-1这并不回答原来的问题,它是问如何将一个EXE分成多个文件。 – 2013-03-12 20:45:59

+4

这个问题是一个关于exe文件太大的误解,而不是如何将它们拆分成许多dll的IMO ..这实际上会使它需要更长的时间加载和更多的磁盘空间由于簇大小舍入.. – paulm 2013-03-12 20:47:47

0

的根据OP的建议,将exe分成几个文件(在Windows上)的方法是使用dll。

这些评论者是正确的,这实际上不会占用磁盘空间更少,也不会保存任何内存,但还有其他原因可以将应用程序分成多个文件。例如,要共享代码(单个dll可以被多个应用程序使用),或者帮助应用程序更快地加载(只在实际需要时加载dll)。

3

要回答你的问题,是的。如果你愿意,你绝对可以将你的程序分成独立的DLL文件。

我见过一些开发人员将实用函数编译为单独的常见DLL文件,这些文件可以作为参考引入其他项目中。这样可以从中调用它的对象和方法。

事后看来,编译代码相对较小。二进制数据实际上消耗了大部分空间:视频,图像,模型,声音等等。虽然对于较小的程序来说,将这些资源直接打包到可执行文件中是可能和常见的,但对于许多显而易见的原因,这通常不是一个好主意。

最后,大型可执行文件对于当今的技术并不是一个大问题。对于较小的节目,我不会为此而出汗。项目得到的越多,设计开发越多。