FAQ:WinAPI VCPP:создать exe-шник меньше 24-х килобайт — различия между версиями

Материал из Весельчак У
Перейти к: навигация, поиск
(Новая: ===Как создать в VC++ exe-шник меньше 24-х килобайт?=== В исходнике нет ничего, кроме точки входа, а размер пол...)
 
(Как создать в VC++ exe-шник меньше 24-х килобайт?)
 
Строка 17: Строка 17:
 
1) Размер можно уменьшить, покрутив настройки линкера.
 
1) Размер можно уменьшить, покрутив настройки линкера.
 
Откройте свойства проекта и выберите вкладку "Link" (или нажмите Alt+F7). Удалите все имена библиотек из поля "Object/library modules:" и наберите в нем "MSVCRT.LIB kernel32.lib user32.lib". Нажмите OK и скомпилируйте. Размер файла будет сокращён до 16кБ. Также поставьте галку "Ignore all default libraries" во вкладке Link свойств проекта.
 
Откройте свойства проекта и выберите вкладку "Link" (или нажмите Alt+F7). Удалите все имена библиотек из поля "Object/library modules:" и наберите в нем "MSVCRT.LIB kernel32.lib user32.lib". Нажмите OK и скомпилируйте. Размер файла будет сокращён до 16кБ. Также поставьте галку "Ignore all default libraries" во вкладке Link свойств проекта.
Затем можно поиграться с размером страниц кода - помощью опции ALIGN линкера в поле "Project Options". Синтаксис:
+
Затем можно поиграться с размером страниц кода - с помощью опции ALIGN линкера в поле "Project Options". Синтаксис:
 
  /ALIGN:N
 
  /ALIGN:N
 
, где N - число 2, 4, 8, ... (т.е. степень двойки). Часто наилучший вариант оказывается - значение 4096.
 
, где N - число 2, 4, 8, ... (т.е. степень двойки). Часто наилучший вариант оказывается - значение 4096.

Текущая версия на 00:38, 7 августа 2008

Как создать в 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".