gpt4 book ai didi

delphi - 在单个 DCU 中编译多个单元

转载 作者:行者123 更新时间:2023-12-03 17:20:07 26 4
gpt4 key购买 nike

拥有 .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 的组件面板中时,.dcu 被放置在 .BPL(Borland Package Library)中,这是一种特殊类型的 DLL;然后将该 BPL 或包文件作为执行代码加载到 IDE 中。这就是设计时按钮在窗体上的可视化显示方式;在 BPL 中执行的代码实际上创建了一个按钮,并允许在表单编辑器中显示和操作它。

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

关于delphi - 在单个 DCU 中编译多个单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13297234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com