Компиляция нескольких устройств в одном 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, когда они не хотят раскрывать исходный код.

Другие вопросы по тегам