Delphi 包在没有找到引用类型的单元文件的情况下编译?
Delphi package compiles without the finding the unit file of a referenced type?
今天我想弄清楚为什么我认为应该破坏的东西会起作用。
我没有什么 Delphi 经验,我继承了一个 Delphi 代码库,并且正在设置一台机器,用于维护和编译它。我有一个编译成功的包,但无法弄清楚它是如何解析其中一种类型的。我的理解是,当你使用一个单位时,你必须
- 直接在你的包中包含源文件
- 在您的项目搜索路径上解析源 pas 或 dcu 文件
- 解析你的IDE库路径
上的源pas或dcu文件
None 这些似乎正在发生,但包编译。否则如何编译成功?
详情
我有 'base' 包直接包含在文件 THotLog.pas 中。该文件出现在项目管理器中项目的 Contains 文件夹下。 THotLog 不是包中的组件之一,它不在基础包的注册过程中。
然后我有 'consuming' 个需要基础包的包。消费包有几个带有 THotLog 成员的组件,消费包编译。这让我感到惊讶,因为我认为消费包必须能够找到 THotLog.pas 或 THotLog.dcu.
这是针对 RAD Studio 10.1 的。项目搜索路径(项目 > 选项:搜索路径)为空,IDE 搜索路径(工具 > 选项,然后是环境选项 > Delphi 选项 > 库)不包括 THotLog 所在的位置。
我也试过重命名硬盘上的所有 THotLog 文件并且消费包仍然可以编译。
假设我对类型解析的理解是错误的,我尝试制作一组具有类似布局的示例项目,并且示例使用包无法在不定位 pas 或 dcu 文件的情况下解析示例 THotLog。
构建 Delphi 包时,compiler/linker 会创建一个名为 [package-name].dcp
的 编译包文件 。它是一个二进制文件,包含该包中包含的所有已编译单元。
编译“基础”包创建了一个“消费”包可见的 [base-package].dcp
文件。 “consuming”包在其“Requires”部分引用了 base-package
;这是基本包的 DCP 文件的 link。
今天我想弄清楚为什么我认为应该破坏的东西会起作用。
我没有什么 Delphi 经验,我继承了一个 Delphi 代码库,并且正在设置一台机器,用于维护和编译它。我有一个编译成功的包,但无法弄清楚它是如何解析其中一种类型的。我的理解是,当你使用一个单位时,你必须
- 直接在你的包中包含源文件
- 在您的项目搜索路径上解析源 pas 或 dcu 文件
- 解析你的IDE库路径 上的源pas或dcu文件
None 这些似乎正在发生,但包编译。否则如何编译成功?
详情
我有 'base' 包直接包含在文件 THotLog.pas 中。该文件出现在项目管理器中项目的 Contains 文件夹下。 THotLog 不是包中的组件之一,它不在基础包的注册过程中。
然后我有 'consuming' 个需要基础包的包。消费包有几个带有 THotLog 成员的组件,消费包编译。这让我感到惊讶,因为我认为消费包必须能够找到 THotLog.pas 或 THotLog.dcu.
这是针对 RAD Studio 10.1 的。项目搜索路径(项目 > 选项:搜索路径)为空,IDE 搜索路径(工具 > 选项,然后是环境选项 > Delphi 选项 > 库)不包括 THotLog 所在的位置。
我也试过重命名硬盘上的所有 THotLog 文件并且消费包仍然可以编译。
假设我对类型解析的理解是错误的,我尝试制作一组具有类似布局的示例项目,并且示例使用包无法在不定位 pas 或 dcu 文件的情况下解析示例 THotLog。
构建 Delphi 包时,compiler/linker 会创建一个名为 [package-name].dcp
的 编译包文件 。它是一个二进制文件,包含该包中包含的所有已编译单元。
编译“基础”包创建了一个“消费”包可见的 [base-package].dcp
文件。 “consuming”包在其“Requires”部分引用了 base-package
;这是基本包的 DCP 文件的 link。