繁体   English   中英

在单个DCU中编译多个单元

[英]Compiling multiple units in a single DCU

来自.NET背景,现在正在使用Delphi。 在.NET中,我曾经有一个单独的库项目,其中许多类分隔成不同的文件。 当我编译这个项目时,我得到了一个DLL文件。

但是,我无法在Delphi中这样做。 我有很多类,每个类都在自己的文件中,并且有自己的单元名称(我没有找到一种方法来拥有多个具有相同单元名称的文件)。 当我编译我的项目时,我的项目中的每个单元都有一个DCU文件(我相信这相当于一个.NET DLL?)。

问题是我不想拥有那么多文件! 我想只有一个DCU文件用于我所有不同单元的类。 有没有办法实现我想做的事情? 你如何处理这些DCU?

.DCU (Delphi编译单元)文件是在编译源(文本)和链接可执行文件之间使用的二进制文件。 它们由编译器创建,在内存中连接在一起,与启动代码结合并由链接器放入实际的可执行文件(.EXE / .DLL / .BPL)。

.DCU文件不是.DLL (动态链接库)文件,尽管Delphi可以将一个或多个.dcu文件和链接组合到.DLL

大多数时候.dcu文件的数量毫无意义; 它是您需要关注的.pas源文件,并且您创建的每个源单元都有一个。 如果源文件已更改,则会根据需要重新创建它们,或者如果源的链接速度未更改,则在编译状态下使用它们。 在uses子句中,每个.pas文件总是有一个.dcu文件,还有一个用于编译自己的源文件。

将组件安装到IDE中的Component Palette中时,.dcu放在.BPL (Borland包库)中,这是一种特殊类型的DLL; 然后将BPL或包文件作为执行代码加载到IDE中。 这是在设计时在窗体上可视地显示按钮的方式; 在BPL中执行的代码实际上创建了一个按钮,并允许它在表单编辑器中显示和操作。

当您构建可执行文件(并且不使用运行时包)时,DCU文件将链接到您的应用程序,并且一旦创建了可执行文件(.EXE)文件,则不再需要原始.pas文件或.dcu文件。 (直到,也就是说,您需要对可执行文件进行更改,在这种情况下修改.pas文件,编译器会创建一个新的.dcu ,并且链接器将它们组合在一起以创建新的.exe文件。)

.DCU文件是开发过程中使用的中间文件。

.DCU文件不随最终的可执行文件.EXE文件一起提供

是的,它可以用Delphi构建一个.DLL并使(Delphi制造的).EXE使用它。 如果遵循某些约定,常规C / C ++ .EXE也可以使用Delphi .DLL。

如果要将一组过程/类发送到库,可以创建.DLL或(更多Delphi本机).BPL。

每次修改.PAS文件并重新编译它都是对应的.DCU文件也会重建。

在某些开发环境中,.DCU文件提供给开发人员而不是源.PAS文件,当他们不想关闭源代码时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM