首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在单个DCU中编译多个单元

在单个DCU中编译多个单元
EN

Stack Overflow用户
提问于 2012-11-09 04:26:57
回答 2查看 2K关注 0票数 2

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

但是,我不能在Delphi中做到这一点。我有许多类,每个类都在它们自己的文件中,有自己的单元名称(我没有找到一种方法让多个文件具有相同的单元名称)。当我编译我的项目时,我有一个DCU文件(我相信这相当于一个.NET DLL?)对于我的项目中的每个单元。

问题是我不想有那么多的文件!我希望我的所有类在不同的单元中只有一个DCU文件。有没有办法实现我想做的事?您如何处理这些DCU?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-09 04:49:50

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

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

在大多数情况下,.dcu文件的数量是没有意义的;它是您需要关注的.pas源文件,并且您创建的每个源单元都有一个这样的源文件。如果源文件改变了,它们会根据需要重新创建,或者如果源文件没有改变链接速度,它们就会在编译状态下使用。在uses子句中,每个.pas文件总是有一个.dcu文件,另外还有一个用于正在编译的您自己的源代码。

当您将组件安装到集成开发环境的组件面板中时,.dcu被放置在.BPL (Borland package Library)中,这是一种特殊类型的DLL;然后,该BPL或包文件作为执行代码加载到集成开发环境中。这就是按钮在设计时在窗体上可视化显示的方式;在BPL中执行的代码实际上创建了一个按钮,并允许在form Editor中显示和操作它。

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

票数 14
EN

Stack Overflow用户

发布于 2012-11-09 08:23:59

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

最终的可执行.EXE文件不附带.DCU文件

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

如果您想将一个过程/类的集合发布到一个库中,可以创建一个.DLL或(更适合于Delphi语言的) .BPL。

每次修改和重新编译.PAS文件时,它对应的.DCU文件也会重新编译。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13297234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档