簡體   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