Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > DLL Её размер


Автор: ivan219 26.9.2006, 21:04
Вот код маей DLL
Код

library ProFunDll;
function ArcCosFcA(F,A:Real):Real; stdcall;
begin
 Result:=A+F;
end;
exports ArcCosFcA;
end.

Весит 16Кба почему так много ведь есть DLL с ещё болшей начинкой а весять почти ну или чють болше чем мая.

Вчём причина smile 

Автор: jack128 26.9.2006, 21:16
а что напрягает? Лишнии 10кб на винте жалко??

Автор: ivan219 26.9.2006, 21:37
Ну если мне просто интересно что это уже проблема smile 

Автор: Sartorius 26.9.2006, 21:42
Собери релиз smile 

Автор: Snowy 26.9.2006, 22:18
Цитата(Sartorius @  26.9.2006,  21:42 Найти цитируемый пост)
Собери релиз
Это не C++.
Код дельфи - всегда релиз.
Уменьшить можно. А надо?

Автор: Sartorius 26.9.2006, 22:40
Цитата

 Код дельфи - всегда релиз.


Вроде же можно убрать отладочную информацию.... Я об этом... Что-то такое : {$D-}

Автор: RA 26.9.2006, 22:45
Два варианта уменшить и безтого малый размер:

1. замена системных юнитов на коловские -> http://bonanzas.rinet.ru/e_downloads.htm
2. компиляция из под D4

Автор: Romikgy 26.9.2006, 22:49
Цитата(RA @  26.9.2006,  21:45 Найти цитируемый пост)
компиляция из под D4

имхо лучше 3

Автор: Snowy 26.9.2006, 22:51
Цитата(RA @  26.9.2006,  22:45 Найти цитируемый пост)
компиляция из под D4
Это только увеличит размер.
С ростом версии до 7-ки размер ехе уменьшается.
Разумеется я не имею в виду VCL - VCL только растёт.
Речь про невисиэльную dll.

Добавлено @ 22:53 
Цитата(Sartorius @  26.9.2006,  22:40 Найти цитируемый пост)
Вроде же можно убрать отладочную информацию.... Я об этом... Что-то такое : {$D-}
Не играет существенной роли.

Добавлено @ 22:56 
Цитата(RA @  26.9.2006,  22:45 Найти цитируемый пост)
замена системных юнитов на коловские
А вот это да. Размер резко вниз идёт.
Только компилить нужно из коммандной строки.
Такде обработать striprelock и отрезать ресурсы RCDATA.
Кило 6-7 в итоге получится. Меньше 5 кило эти способы не датут.
Меньше - только совсем радикальные - то, что я приводил в http://forum.vingrad.ru/index.php?showtopic=82845&st=15.

Автор: ivan219 26.9.2006, 22:58
Так уменя там вобще никаких uses нет всё что было я выложил.

Вот что мая библиотека импортирует:
Код

KERNEL32.DLL
USER32.DLL
ADVAPI32.DLL


Добавлено @ 23:06 
Маленько про абгрэйдил Delphi скачал обновление и +1Кб smile 
Код

library ProFunDll;
end.

Вес 16,5 Кб  smile что в этом коде может весить так много smile 

Да и сама Delphi поправилась теперь простое окно весит 400Кб раньше было 365Кб и чего туда такого нужного прибавили smile

Добавлено @ 23:12 
Може можно эти библиотеки удалить smile а то они 32 функции импортируют в никуда smile 
Код

KERNEL32.DLL
USER32.DLL
ADVAPI32.DLL

Код

library ProFunDll;
end.

Автор: Snowy 26.9.2006, 23:15
Вот готовый комплект.
6 кило с использованием KOL dcu's.
Компилить из коммандной строки
dcc32 ProFunDll.dpr

Добавлено @ 23:16 
импортрует только kernel

Добавлено @ 23:17 
kernel удалить низя - без него ни одна программа не работает.
А, если и работает, то глючит при выходе.

Автор: ivan219 26.9.2006, 23:19
Snowy, твоя библиотека импортирует 16 функций smile спасибо буду пробовать из командной строки.

Добавлено @ 23:26 
После некоторого подсчёта получается что код:
Код

library ProFunDll;
function ArcCosFcA(F,A:Real):Real; stdcall;
begin
 Result:=A+F;
end;
exports ArcCosFcA;
end.

Болше чем:
Код

library ProFunDll;
end.

Всего на 512Байт smile 

Автор: Snowy 26.9.2006, 23:44
Цитата(ivan219 @  26.9.2006,  23:19 Найти цитируемый пост)
 твоя библиотека импортирует 16 функций 
А что делать - необходимые функции dll + менеджер памяти.

Цитата(ivan219 @  26.9.2006,  23:19 Найти цитируемый пост)
Всего на 512Байт
Просто результат компиляции в дельфи всегда кратен 512.
Даже, если результат на 1 байт больше, допишутся ещё 511 нулей.
Я не знаю, какая в этом необходимость, но в борланд сделали именно так.

Добавлено @ 23:45 
Ты можешь дописать ещё 20 аналогичных строк - результат не изменится.
ехе будет того же размера.

Автор: jack128 27.9.2006, 00:18
ivan219, смотри на System.pas и SysInit.pas. Вот всё это барахло и занимает 16 или сколько там кило.

Автор: RA 27.9.2006, 01:21
Цитата(Snowy @  26.9.2006,  22:51 Найти цитируемый пост)
Это только увеличит размер.
С ростом версии до 7-ки размер ехе уменьшается.
Разумеется я не имею в виду VCL - VCL только растёт.
Речь про невисиэльную dll.


Я кокраз имею ввиду не невисиэльную dll, без vcl.
Блин лично проверял, чем меньше D тем меньше вес. Особенно касается это D4.

Автор: Snowy 27.9.2006, 08:53
RA, я dll не проверял - проверял exe.
Чем выше версия, тем меньше ехе.
Выше 7-й не тестировал - только 3-7

Автор: ivan219 27.9.2006, 20:41
Незнаю нащёт EXE меньших версий, я установил обновление на Delphi7 и размер EXE увеличился smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)