FAQ:WinAPI VCPP:создать exe-шник меньше 24-х килобайт
Как создать в VC++ exe-шник меньше 24-х килобайт?
В исходнике нет ничего, кроме точки входа, а размер получается 24 килобайта. Вот исходник:
#include "stdafx.h" int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { return 0; }
1) Размер можно уменьшить, покрутив настройки линкера. Откройте свойства проекта и выберите вкладку "Link" (или нажмите Alt+F7). Удалите все имена библиотек из поля "Object/library modules:" и наберите в нем "MSVCRT.LIB kernel32.lib user32.lib". Нажмите OK и скомпилируйте. Размер файла будет сокращён до 16кБ. Также поставьте галку "Ignore all default libraries" во вкладке Link свойств проекта. Затем можно поиграться с размером страниц кода - помощью опции ALIGN линкера в поле "Project Options". Синтаксис:
/ALIGN:N
, где N - число 2, 4, 8, ... (т.е. степень двойки). Часто наилучший вариант оказывается - значение 4096. Будет предупреждение:
LINK : warning LNK4108: /ALIGN specified without /DRIVER or /VXD; image may not run
Но если файл запустился, то всё нормально.
2) Можно задать такие настройки:
#pragma comment(linker, "/opt:nowin98") #pragma comment(linker, "/entry:WinMain") #pragma comment(lib, "user32.lib")
3) Можно, также, почитать статью в MSDN: "Reduce EXE and DLL size with LIBCTINY.LIB".