monrus
Опытный
Offline
|
|
« : 24-03-2006 21:25 » |
|
Когда создаю файл с винапи , чтобы показывался мессажбокс - файл получается 17 кб. Есть иде Странник, которая линкует файлы весом 4 кб. Как можно самому создать модуль с вызовом винапи функций? колы и т.п. не предлагать, т.к. пробовал ч/з kol.dcu - файл получался - 69,5 кб. Есть есть др. альтернативные библиотеки - дайте ссылки.
|
|
|
Записан
|
|
|
|
monrus
Опытный
Offline
|
|
« Ответ #1 : 24-03-2006 21:58 » |
|
или windows.pas
|
|
|
Записан
|
|
|
|
PooH
Глобальный модератор
Offline
Пол:
... и можно без хлеба!
|
|
« Ответ #2 : 25-03-2006 04:56 » |
|
windows.pas поставляется - смотри. я правда не понял зачем это надо - windows.pas просто загружает функции из библиотек. вот пример кода - экзежник 8к program test; uses windows; begin MessageBoxA(0,'TestText','Test',MB_OK); end . компиляция: D:\Temp\test>dcc32 test.pas Borland Delphi Version 14.0 Copyright (c) 1983,2001 Borland Software Corporation test.pas(6) 7 lines, 0.03 seconds, 3876 bytes code, 1917 bytes data.
а теперь ради эксперимента - откомпилим прогу (екзэшник получается такого же размера): компиляция D:\Temp\test>dcc32 test.pas Borland Delphi Version 14.0 Copyright (c) 1983,2001 Borland Software Corporation test.pas(4) 5 lines, 0.01 seconds, 3704 bytes code, 1909 bytes data.
то есть - разницы практически никакой.
|
|
« Последнее редактирование: 04-12-2007 21:28 от Алексей1153++ »
|
Записан
|
Удачного всем кодинга! -=x[PooH]x=-
|
|
|
x77
Модератор
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
|
|
« Ответ #3 : 25-03-2006 11:00 » |
|
чтобы юзать виндовое апи достаточно объвить (импортировать) соответствующие функции, как это делает windows.pas.
|
|
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #4 : 27-03-2006 03:53 » |
|
В дельфях все равно у тебя 4 kb не получится. В Delphi6, если в пустом консольном приложении отключить все модули получается экзешник под 8 kb
|
|
|
Записан
|
|
|
|
monrus
Опытный
Offline
|
|
« Ответ #5 : 31-03-2006 20:38 » |
|
я знаю что он загружает функции библиотек, меня интересет как он это делает. можно хотя бы пример этого посмотреть.
|
|
|
Записан
|
|
|
|
monrus
Опытный
Offline
|
|
« Ответ #6 : 31-03-2006 20:40 » |
|
у меня вот че получается:
Borland Delphi for Win32 compiler version 18.0 Copyright (c) 1983,2005 Borland Software Corporation
6 lines, 0.03 seconds, 10680 bytes code, 12160 bytes data.
Output completed (0 sec consumed) - Normal Termination
|
|
|
Записан
|
|
|
|
monrus
Опытный
Offline
|
|
« Ответ #7 : 31-03-2006 20:42 » |
|
можть из-за компилера
|
|
|
Записан
|
|
|
|
monrus
Опытный
Offline
|
|
« Ответ #8 : 31-03-2006 22:08 » |
|
компилер запихивает много левого в файл - вот пример
|
win.rar (13.58 Кб - загружено 994 раз.)
|
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #9 : 02-04-2006 12:57 » |
|
Вот твой пример, но без модуля Windows.
|
Win.rar (4.08 Кб - загружено 965 раз.)
|
|
Записан
|
|
|
|
monrus
Опытный
Offline
|
|
« Ответ #10 : 03-04-2006 15:09 » |
|
Спасибо, zubr, но все равно делф 7 - 13 кб, делф 2006 - 17 кб.
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #11 : 03-04-2006 19:24 » |
|
После определенного момента, размеры уже не слишком зависят от подключаемых модулей. Зависят от настроек линковшика. На одном из форумов читал правила, как сделать маленький размер исполняемого файла. Правда под VC++. Там помоему добились размера 648 байт. Но при этом, многие настройки сильно резали. Помимо твоей проги, Дельфи вставляет свой код в начало и конец программы. В турбо паскале была библиотека System.dpu вроде. Она подключалась на автомате, без ведома. В Дельфи я не думаю, что ситуация изменилась.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
zubr
Гость
|
|
« Ответ #12 : 03-04-2006 20:25 » |
|
В турбо паскале была библиотека System.dpu вроде. Она подключалась на автомате, без ведома. В Дельфи я не думаю, что ситуация изменилась. Да, не изменилась. Причем чем позднее версия Delphi, тем больше размер System.dcu
|
|
« Последнее редактирование: 03-04-2006 20:30 от zubr »
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #13 : 03-04-2006 20:33 » |
|
zubr, +1 За постоянную помошь в разделе.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
zubr
Гость
|
|
« Ответ #14 : 04-04-2006 03:47 » |
|
Finch, сэнк
|
|
|
Записан
|
|
|
|
monrus
Опытный
Offline
|
|
« Ответ #15 : 04-04-2006 14:15 » |
|
если просмотреть на ваш файл - то там видно, что он импортирует не только MessageBoxA, но и много других функций - почему?
|
|
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #16 : 04-04-2006 21:05 » |
|
Потому что приложение как минимум загружает динамическую библиотеку User32.dll в которой много функций, а не только MessageBoxA.
|
|
|
Записан
|
|
|
|
monrus
Опытный
Offline
|
|
« Ответ #17 : 04-04-2006 23:39 » |
|
а почему - если делать это например на асме - то достаточно одной функции?
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #18 : 05-04-2006 00:01 » |
|
monrus, Читай, что написано выше. + Используй программы, типа DumpBin или Depends от VC++. Которые покажут, что даже нулевая прога сколько функций тянет из других библиотек. Не думаю, что прога на асме, не тянет ни одной функции. Просто наверно это скрыто в каком нибудь скрытом include.
|
|
« Последнее редактирование: 05-04-2006 00:07 от Finch »
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
monrus
Опытный
Offline
|
|
« Ответ #19 : 07-04-2006 20:49 » |
|
Спасибо что помогаете! На асме - две функции - box и wsprintfa - но последнюю не использует. а на дельфе их немеренно.
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #20 : 07-04-2006 21:08 » |
|
Ну так, чем шире интерфейс, тем быстрее добиваться цели. Тут уже балансируют между скоростью разработки и размером файла. Ибо чем более универсален код, тем больше размеры он имеет.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
monrus
Опытный
Offline
|
|
« Ответ #21 : 07-04-2006 21:26 » |
|
Спасибо, тема закрыта
|
|
|
Записан
|
|
|
|
zubr
Гость
|
|
« Ответ #22 : 18-04-2006 08:09 » |
|
|
|
|
Записан
|
|
|
|
|