用于最小可执行文件的C++ Windows编译器

Ira*_*kli 2 c++ windows compiler-construction api

我想开始用C++编程.我已经在vb6,vb.net中编写了一些程序,现在我想获得C++知识,我想要的是一个可以将我的代码编译到最小的Windows应用程序的编译器.例如,有一个名为PureBasic的Basic语言编译器可以使Hello world独立应用程序的大小为5 kb,而我编译的简单套接字程序只有12kb(没有任何DLL-s和Runtime文件).我知道它很棒,所以我想要这样的C++.

如果我错了并且没有这种类型的Windows编译器可以有人给我一个网站或书籍,可以教我如何减少C++可执行文件的大小,或如何使用Windows API调用?

ybu*_*ill 5

例如Microsoft Visual C++编译器...您只需关闭到C runtime(/NODEFAULTLIB)的链接,您的可执行文件将小到5KB.这里有一个问题:你将无法从C标准C和C++库,也没有标准功能++类似的异常处理,可以使用几乎所有的东西newdelete运营商,浮点算术,等等.您只需要使用纯OS功能(例如,创建文件CreateFile,分配内存HeapAlloc等).

  • @Sisir:关闭“_security_check_cookie”的缓冲区安全检查(“/GS-”)。`__mainCRTStartup` 是默认入口点,您可以使用 `/ENTRY:main` 覆盖它。 (2认同)

Fer*_*cio 5

多年前,我不得不用 VC6 做到这一点。这是必要的,因为可执行文件将通过网络传输到目标计算机,并在那里运行。由于它可能通过调制解调器连接发送,因此需要尽可能小。为了缩小可执行文件,我依赖于两种技术:

  1. 不要使用 C 或 C++ 运行时。告诉编译器不要链接它们。使用 Windows API 的一个子集实现所有必要的功能,该子集保证在当时的所有 Windows 版本(98、Me、NT、2000)上都可用。
  2. 告诉链接器将所有代码和数据段合并为一个。我不记得这个开关,我不知道它是否仍然可能,尤其是对于 64 位可执行文件。

最终的可执行文件大小:~2K