错误 F2063 无法编译使用的单元(依赖包的)

Error F2063 Could not compile used unit (of dependent package)

我写了 2 个包:MEComps_DXE5 和 AMLComps_DXE5。后者依赖于前者。两者都应该是多平台的:Win32、Win64 和(将来)OSX.

当我打开第一个包 MEComps_DXE5 时,我能够编译、构建并安装它。我收到一些警告,因为该库包含的代码也必须在旧 D5 上编译,但构建成功并在预期位置创建了 dcu 和 dcp 文件。

当我打开第二个包裹AMLComps_DXE5时,我发现这个情况:

几天来我一直在尝试解决这个问题,但无济于事。我在两个方面努力:

第一个问题我完全没有头绪

关于第二个问题,documentation在这种情况下是没有用的。它解释了为什么无法编译使用过的单元是致命的,并指出原因是通过查看以前的错误来确定的。但是在这种情况下,没有以前的错误。

由于 MEComps_DXE5 实际上是自行编译和构建的,我怀疑这与语法或代码有任何关系。编译器似乎无法找到编译这些单元所需的东西。

这两个包各自位于各自的目录中。我把MEComps\Win32dcu目录放在了库路径和浏览路径上。 IDE实际上查找使用的单位没有问题。

我还检查了 dcc32 命令行,似乎所有包含的目录都是编译器已知的。

我可以添加的其他信息:

        包裹 MEComps_DXE5;

{$R *.res} {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} {$ALIGN 8} {$ASSERTIONS ON} {$BOOLEVAL OFF} {$DEBUGINFO ON} {$EXTENDEDSYNTAX ON} {$IMPORTEDDATA ON} {$IOCHECKS ON} {$LOCALSYMBOLS ON} {$LONGSTRINGS ON} {$OPENSTRINGS ON} {$OPTIMIZATION OFF} {$OVERFLOWCHECKS OFF} {$RANGECHECKS OFF} {$REFERENCEINFO ON} {$SAFEDIVIDE OFF} {$STACKFRAMES ON} {$TYPEDADDRESS OFF} {$VARSTRINGCHECKS ON} {$WRITEABLECONST OFF} {$MINENUMSIZE 1} {$IMAGEBASE 0000} {$DEFINE DEBUG} {$ENDIF IMPLICITBUILDING} {$IMPLICITBUILD ON} requires rtl, fmx, dbrtl, xmlrtl; contains MEClasses in 'MEClasses.pas', MEConsts in 'MEConsts.pas', MEDataReader in 'MEDataReader.pas', MEDateUtils in 'MEDateUtils.pas', MEEncoding in 'MEEncoding.pas', MEEncodingISO2022 in 'MEEncodingISO2022.pas', MEFileUtils in 'MEFileUtils.pas', MELists in 'MELists.pas', MEMath in 'MEMath.pas', MENumUtils in 'MENumUtils.pas', MESQLUtils in 'MESQLUtils.pas', MEStrUtils in 'MEStrUtils.pas', MESysUtils in 'MESysUtils.pas', METypes in 'METypes.pas', MEURIUtils in 'MEURIUtils.pas', MEXMLUtils in 'MEXMLUtils.pas'; end.

Delphi IDE 在 editing/compiling 包方面远非完美,但你应该解决你这边的问题 - 更好地配置你的包并且 Delphi 会正确编译它们。

我只能针对给定的信息给您一般性建议:

  • 如果您需要 2 个包的公共包含文件,请为该文件创建一个单独的目录,并将此目录添加到两个包的搜索路径中(在 Base 构建配置中)。

  • 切勿将 .dcu 与源文件放在同一文件夹中;始终为您的包设置 "unit output directory" 选项(也在 Base 构建配置中);我推荐 $(BDSCOMMONDIR)\MyPacks$(Config)$(Platform) 作为你的包的目录;如果源 (.pas) 文件夹中已有 .dcu,请删除它们,这与创建这些 .dcu 的 Delphi 版本无关。

  • 永远不要将依赖包源的路径添加到搜索路径,只添加编译的 .dcu 的路径(如果您遵循之前的建议,则为 $(BDSCOMMONDIR)\MyPacks$(Config)$(Platform))。