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

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

Маленькой приложение с Build with runtime packages [D6]


Bopros ©   (2006-01-06 13:43:00) 

написал приложение:
program project1;

begin
 while true do begin
   end;
end.

я так понимаю оно vcl не использует, поэтому поставил галочку
Build with runtime packages
Приложение стало меньше, но при запуске в windows без делфи выдаёт ошибку:
"Приложению не удалось запуститься, поскольку rtl60.bpl не был найден."

если я пишу приложение на API без использования vcl то галочку Build with runtime packages можно поставить или я не прав?


Bopros   (2006-01-06 17:20:00) [1]

спасибо за разъяснения, понял


Reindeer Moss Eater   (2006-01-06 15:14:00) [2]

так а первый и не является vcl


Sandman29   (2006-01-06 15:13:00) [3]

есть rtl60.bpl, есть vcl60.bpl. программы без vcl не требуют второго, но все равно требуют первого


Sergey_Masloff   (2006-01-06 14:58:00) [4]

Ну и вдогонку. Сделай tdump YourProject.exe >outfile.txt
для файла с рантайм пакетами и без. И сравни выходные файлы. Увидишь интересный фрагментик


Section:             Import
 ImportLookUpTblRVA:00000000
 Time Stamp:        00000000
 Forwarder Chain:   00000000 (index of first forwarder reference)

Imports from rtl70.bpl
                 __fastcall System::initialization()
                 __fastcall System::Finalization()
                 __fastcall System::RegisterModule(System::TLibModule *)
                 System::__linkproc__ __fastcall Halt0()
                 System::__linkproc__ __fastcall StartExe(System::PackageInfoTable *, System::TLibModule *)
                 System::__linkproc__ __fastcall HandleFinally()
                 System::IsConsole

Imports from kernel32.dll
                 GetModuleHandleA


Sergey_Masloff   (2006-01-06 14:50:00) [5]

Вобщем, много можно говорить давай остановимся на
1) Некоторые rtl-функции  используются неявно ЛЮБЫМ приложением delphi даже

begin
end.


2) Если галочка поставлена то эти функции не линкуются в файл программы. Вместо этого программа попытается при запуску подгрузить DLL (в данном частном случае BPL ) с реализацией. Если не удалось то облом

3) Если галочку не стаить все прилинкуется в 1 исполняемый файл и будет работать не требуя пакетов.


Reindeer Moss Eater   (2006-01-06 14:46:00) [6]

повторюсь - тогда на чистой винде вылазеет сообщение

А как ты хотел?
Приложению нужен пакет rtl60.bpl, а его нет.


Sergey_Masloff   (2006-01-06 14:39:00) [7]

Ты не можешь в Delphi отказаться от использования System.pas - он неявно включается в любой проект. Ну а у него есть секция инициализации и далее по списку Ж-)


Bopros   (2006-01-06 14:20:00) [8]

повторюсь - тогда на чистой винде вылазеет сообщение
Приложению не удалось запуститься, поскольку rtl60.bpl не был найден.
зачем ей бпл если я всл не использую?


Reindeer Moss Eater   (2006-01-06 14:11:00) [9]

Можно ставить эту галочку.


Наверх

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