Компиляция нескольких устройств в одном DCU
Исходя из.NET фона, теперь работает с Delphi. В.NET у меня был отдельный библиотечный проект со многими классами, разделенными на отдельные файлы. Когда я скомпилировал этот проект, я получил один файл DLL.
Однако я не могу сделать это в Delphi. У меня есть много классов, каждый в своем файле со своим собственным именем устройства (я не нашел способа иметь несколько файлов с одинаковым именем устройства). Когда я компилирую свой проект, у меня есть один файл DCU (я полагаю, что это эквивалент.NET DLL?) Для каждого модуля в моем проекте.
Проблема в том, что я не хочу иметь столько файлов! Я хотел бы иметь только один файл DCU для всех моих классов в разных единицах. Есть ли способ достичь того, что я хочу сделать? Как вы справляетесь с этими DCU?
2 ответа
.DCU
Файлы (Delphi Compiled Unit) - это двоичные файлы, которые используются между компиляцией исходного кода (текста) и связыванием исполняемого файла. Они создаются компилятором, объединяются в памяти, объединяются с кодом запуска и помещаются компоновщиком в реальный исполняемый файл (.EXE/.DLL/.BPL).
.DCU
файлы не .DLL
(Dynamic Link Library), хотя Delphi может объединять один или несколько .dcu
файл и ссылка на .DLL
,
Номер .dcu
файлы бессмысленны большую часть времени; Вам нужно беспокоиться о исходных файлах.pas, и для каждого создаваемого вами исходного модуля есть один из них. Они воссоздаются по мере необходимости, если исходный файл изменяется, или используются в их скомпилированном состоянии, если исходный код не изменяется для скорости соединения. Всегда есть один .dcu
файл в .pas
файл в вашем предложении использования, плюс один для вашего собственного источника компилируется.
Когда вы устанавливаете компонент в палитру компонентов в IDE,.dcu помещается в .BPL
(Библиотека пакетов Borland), представляющая собой специальный тип DLL; этот BPL или пакетный файл затем загружается как исполняющий код в IDE. Вот как кнопка визуально отображается на форме во время разработки; код, выполняемый в BPL, фактически создает кнопку и позволяет отображать ее и управлять ею в редакторе форм.
Когда вы создаете исполняемый файл (и не используете пакеты времени выполнения), файл DCU связывается с вашим приложением, и после того, как исполняемый файл (.EXE) не создается, ни оригинал .pas
файл или .dcu
нужен больше (До тех пор, пока вам не потребуется внести изменения в исполняемый файл, в этом случае .pas
файл изменен, компилятор создает новый .dcu
и компоновщик объединяет их для создания нового.exe.)
Файлы.DCU - это промежуточные файлы, используемые в процессе разработки.
Файлы.DCU не поставляются с окончательным исполняемым файлом.EXE
Да, возможно создать.DLL с Delphi и заставить (Delphi-made) .EXE использовать его. Обычный C/C++ .EXE также может использовать Delphi.DLL, если соблюдаются определенные соглашения.
Если вы хотите отправить коллекцию процедур / классов в библиотеку, можно создать.DLL или (более родной Delphi) .BPL.
Каждый раз, когда файл.PAS изменяется и перекомпилируется, его соответствующий файл.DCU также перестраивается.
В определенных средах разработки файлы.DCU предоставляются разработчикам вместо исходных файлов.PAS, когда они не хотят раскрывать исходный код.