IDE Delphi 7 и размер программы

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

09 апр 2004, 22:32

Ситуация банальна: при пересборке проекта под 7-ю версию итоговый размер DLL-ки вырос с 50К (в 5-ке) до 400К+.
Никаких VCL не использую. Это что, так распухли юниты типа SysUtils и CommCtrl или всё же где что в настройках поправить можно?
Даже самый дурацкий замысел можно воплотить мастерски
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

10 апр 2004, 01:02

Думаю, что с этим прийдется мириться.
D D5 CommCtrl тянет за собой ActiveX, а в D7 Что тянут за собой эти модули?
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

10 апр 2004, 01:14

Naeel Maqsudov, да то же самое. Блин, неужели невозможно компилер написать так, чтобы неиспользуемое отсекать?
И думаю я мириться не буду, а откачусь к старой доброй 5-ке :)
Даже самый дурацкий замысел можно воплотить мастерски
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

10 апр 2004, 01:48

Нашёл! Совершенно случайно в импортированной SHDocVw осталось объявление в секции uses неиспользуемого модуля OleServer.
Это он такой жирный - добавляет ок. 280К И прилинковывания мусора тоже не избежать?
Даже самый дурацкий замысел можно воплотить мастерски
Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

10 апр 2004, 17:49

Посмотри еще, что там в uses самого dpr, может он тоже лишнее прихватил. В принципе, ничего революционного там с 5 по 7 не добавилось, чтобы код так раздувался...
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

10 апр 2004, 18:21

Eugie, не dpr у меня руками писаный :) Я вот всё же понять немогу, почему линкер от D5 неиспользуемый OleServer не цеплял, а линкер от D7 его цепляет? Итоговая "опухлость" стоставила 14К, что конечно много, но всё же терпимо.
Даже самый дурацкий замысел можно воплотить мастерски
Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

10 апр 2004, 22:12

На самом деле, линкер цепляет любой юнит, включенный в uses - так написано в документации. Просто включая юнит в uses (даже если он и не используется), мы неявно добавляем вызов кода в соотв.секциях initialization и finalization, ресурсы и т.д. Отсюда и размер растет.

А вот почему при прочих равных D7 генерит код большего размера чем D5 - можно только гадать. Реализация стала навороченнее, ресурсов добавили, да что угодно. Причем, заметь, твой OleServer - не последнее звено в этой цепочке: у него есть свои uses, а у них свои, итд. Вопчем, ребята из Борланда ненавязчиво демонстрируют, что недаром хлеб едят :)
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

15 апр 2004, 00:33

мы неявно добавляем вызов кода в соотв.секциях initialization и finalization, ресурсы и т.д. Отсюда и размер растет
Однако, юниты включаются не полностью. Из кода исключаются функции, которыя явно не используются. Это видно по синим кружочкам на полях слева в окне редактора (сразу после нажатия ctrl-f9). Т.е. если initialization и finalization пустые, то размер не растет. Глобальные переменные юнита также не все включаются в сегмент данных.
Ответить