информационная безопасность
без паники и всерьез
 подробно о проекте
Rambler's Top100Атака на InternetГде водятся OGRыСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Модель надежности отказоустойчивой... 
 Ноябрьский перевыпуск октябрьского... 
 Закопать Flash 
 Октябрьские патчи от MS и перевыпуск... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / FAQ / программирование
FAQ
главная
операционные системы
sysadmin
программирование
теория
общие вопросы





При компиляции программы, фактически состоящей лишь из одного вызова функции 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)

[6484]



Rambler's Top100
Рейтинг@Mail.ru



  Copyright © 2001-2018 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach