Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

"умное связывание" компилятора [D7, WinXP]


АК ©   (2007-01-25 17:44:00) 

Была такая ситуация: писал программку под WinAPI, нужна была функция для вычисления арксинуса, подключил модуль Math и вызвал нужную функцию , размер проги при этом увеличивался примерно на 20Кб (это было вполне существенно), если я просто копировал эту функцию из модуля Math в свой, то размер увеличивался на копейки. Так в чём тогда заключается "умное связывание" компилятора, я ведь из использую всего одну функцию из модуля, а компилируется считай что весь. Те же модули Windows, Messages, System просто огромные и всё же целиком к exe-шнику они не прикрепляются.


Сергей М.   (2007-01-26 10:22:00) [1]


> е же модули Windows, Messages, System просто огромные и
> всё же целиком к exe-шнику они не прикрепляются


Прикрепляются. Точно так же как и любой другой юнит, ибо правила для всех юнитов с этой т.з. одни и те же.


ак   (2007-01-25 18:14:00) [2]

Спасибо, просветили.


novill   (2007-01-25 18:08:00) [3]

> Так что - вся фича в SysUtils?

конкретно в секциях initializationи finalizationи код который там выполняется :)


ак   (2007-01-25 18:06:00) [4]

Так что - вся фича в SysUtils?


novill   (2007-01-25 18:02:00) [5]

Секции initialization и finalization есть конкретно в молуле SysUtils.

код
program Project2;

{$APPTYPE CONSOLE}
{
uses
 SysUtils;
}
begin
Readln;
 { TODO -oUser -cConsole Main : Insert code here }
end.


дает размер 9216 байт

код
program Project2;
{$APPTYPE CONSOLE}
uses
 SysUtils;

begin
Readln;
 { TODO -oUser -cConsole Main : Insert code here }
end.


дает размер 39936

итого 30720за подключение модуля SysUtils


Джо   (2007-01-25 17:47:00) [6]

Math использует также модули SysUtils и Types. И даже если решить (хоть это и не так), что он ничего из них не использует, в них имеются секции initialization и finalization, код из которых тоже будет линковаться к твоему исполнимому модулю.


Наверх

Титульная страница Поиск, карта сайта Написать письмо