BugTraq.Ru
Русский BugTraq
http://www.bugtraq.ru/forum/faq/programming/small1.html

При компиляции программы, фактически состоящей лишь из одного вызова функции MessageBox, получается исполняемый файл размером 30 Кб. Как уменьшить его размер?
:-)
Опубликовано: dl, 25.12.03 14:27

Такой размер файл имеет потому, что в него включается код стандартной библиотеки времени выполнения языка C/С++ (Standard C/С++ Run-Time Library, далее – RTL).

Если стандартная библиотека C/C++ Вам не нужна, и Вы целиком напишите программу на Windows API, то можно отключить RTL. Для этого на вкладке Link в окне Project Settings (для компилятора Visual C++) необходимо:

  1. Включить опцию Ignore all default libraries (можно также использовать ключ /NOD или /NODEFAULTLIB в командной строке линкера).
    После этого в программе нельзя будет пользоваться функциями библиотеки C/C++ (printf, strcpy, malloc и т.д.), а следует использовать только Windows API.
  2. Указать линкеру главную функцию программы в поле Entry Point Symbol (или использовать ключ линкера /ENTRY)
  3. Заметим, что, в отличие от привычных WinMain/main, в нашу главную функцию не передаются параметры hInstance и указатель на командную строку процесса. Их придется получить через Windows API (функции GetModuleHandle, GetCommandLine; может пригодиться и CommandLineToArgW).




обсудить  |  все отзывы (5)

[6793]



  Copyright © 2001-2020 Dmitry Leonov Design: Vadim Derkach