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

Даже самый дурацкий замысел можно воплотить мастерски
Нашёл! Совершенно случайно в импортированной SHDocVw осталось объявление в секции uses неиспользуемого модуля OleServer.
Это он такой жирный - добавляет ок. 280К И прилинковывания мусора тоже не избежать?
Это он такой жирный - добавляет ок. 280К И прилинковывания мусора тоже не избежать?
Даже самый дурацкий замысел можно воплотить мастерски
Посмотри еще, что там в uses самого dpr, может он тоже лишнее прихватил. В принципе, ничего революционного там с 5 по 7 не добавилось, чтобы код так раздувался...
Eugie, не dpr у меня руками писаный
Я вот всё же понять немогу, почему линкер от D5 неиспользуемый OleServer не цеплял, а линкер от D7 его цепляет? Итоговая "опухлость" стоставила 14К, что конечно много, но всё же терпимо.

Даже самый дурацкий замысел можно воплотить мастерски
На самом деле, линкер цепляет любой юнит, включенный в uses - так написано в документации. Просто включая юнит в uses (даже если он и не используется), мы неявно добавляем вызов кода в соотв.секциях initialization и finalization, ресурсы и т.д. Отсюда и размер растет.
А вот почему при прочих равных D7 генерит код большего размера чем D5 - можно только гадать. Реализация стала навороченнее, ресурсов добавили, да что угодно. Причем, заметь, твой OleServer - не последнее звено в этой цепочке: у него есть свои uses, а у них свои, итд. Вопчем, ребята из Борланда ненавязчиво демонстрируют, что недаром хлеб едят
А вот почему при прочих равных D7 генерит код большего размера чем D5 - можно только гадать. Реализация стала навороченнее, ресурсов добавили, да что угодно. Причем, заметь, твой OleServer - не последнее звено в этой цепочке: у него есть свои uses, а у них свои, итд. Вопчем, ребята из Борланда ненавязчиво демонстрируют, что недаром хлеб едят

- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Однако, юниты включаются не полностью. Из кода исключаются функции, которыя явно не используются. Это видно по синим кружочкам на полях слева в окне редактора (сразу после нажатия ctrl-f9). Т.е. если initialization и finalization пустые, то размер не растет. Глобальные переменные юнита также не все включаются в сегмент данных.мы неявно добавляем вызов кода в соотв.секциях initialization и finalization, ресурсы и т.д. Отсюда и размер растет