【问题标题】:Delphi: Required package not foundDelphi:找不到所需的包
【发布时间】:2010-10-20 07:46:48
【问题描述】:

我正在尝试构建 3 个包,A、B 和 C。A 定义了一些在 B 和 C 中使用的基类。我将它们中的所有 3 个都放在同一个项目组中,都设置为输出到相同的自定义 BPL 输出文件夹。此文件夹位于 B 和 C 的搜索路径中。但是当我去构建 B 和 C 时,编译器在 Requires 列表中阻塞。 “找不到所需的包 'A'。”

我如何告诉 B 和 C 在哪里可以找到 A,以便他们正确构建?

【问题讨论】:

  • 验证即使像你这样的超级明星也会遇到这样的问题! (你在这里帮助了我很多次)。感谢您提出明确的问题。
  • 我也有同样的问题。文件存在,文件夹退出,路径已设置。 Delphi 说找不到包。它不喜欢 DCP 文件、BPL 文件或文件夹/路径配置。可爱的。

标签: delphi path delphi-2009 packages


【解决方案1】:

要么找不到包,要么编译器混乱。在后一种情况下,重新启动有时会有所帮助。然后按顺序从所有包中手动构建。

如果确实找不到,请检查所有包(bpl 和 dcp)和 dcu 文件是否可用。两者都需要。

【讨论】:

  • 原来是这个问题。我还需要告诉它在哪里可以找到 DCP 文件。
  • 曾经为那个挣扎过。
  • 现在有一个 DCP 文件存在这个问题,但其他东西让 delphi 感到不安,它不会读取 DCP 文件,再多的重启也无济于事,或者重建。
【解决方案2】:

我会检查以确保您在哪里为软件包编写 .dcp 文件。一旦你有了这个,检查每个包的搜索路径是否有一个 .dcp 输出文件夹的条目。

【讨论】:

    【解决方案3】:

    如果在 IDE 尝试加载包时发生这种情况:您的包输出目录(*.bpl 文件所在的位置)必须位于系统的 PATH 环境变量中。包是静态链接的 DLL,Windows 必须能够找到它们才能加载它们。

    如果在构建包时发生这种情况:任何/所有 DCP 输出目录(*.dcp 文件所在的位置)必须位于相关项目的搜索路径中,以便编译器可以找到已编译的包。 您也可以将包项目的 DCP 输出目录留空 - 在这种情况下,使用在 Tools\Options\Library 中设置的全局 DCP 输出目录;然后,依赖项目就不需要将其包含在他们的搜索路径中。

    【讨论】:

    • 哇,BPL 文件夹不在您的路径中。 IDE 应该对此抱怨。
    【解决方案4】:

    在您尝试编译的包的“requires”子句中可能错误地指定了所需包的名称。举个例子:

    我们有两个包 - VirtualTreesR.dpk 和 VirtualTreesD.dpk。 VirtualTreesD 需要 VirtualTreesR。它们都具有“16”后缀,因此它们都在 Delphi 项目管理器窗口中显示为 VirtualTreesR16.bpl 和 VirtualTreesD16.bpl。你可能认为这些是包的名称,但你错了。包的名称仍然是 VirtualTreesR 和 VirtualTreesD,而不是 VirtualTreesR16 和 VirtualTreesD16。

    当 VirtualTreesR.dpk 被编译时,Delphi 会生成两个文件(我在这里不讨论 DCU)VirtualTreesR*16*.bpl 和 VirtualTreesR.dcp。看到不同?

    然后我们尝试编译 VirtualTreesD.dpk 并得到错误:“[DCC 致命错误] VirtualTreesD.dpk(35): E2202 Required package 'VirtualTreesR16' not found”。

    发生错误是因为 VirtualTreesD.dpk 包的“requires”子句包含以下行:

    requires designide, VirtualTreesR16;

    Delphi 尝试查找 VirtualTreesR16.dcp 并失败,即使 Delphi 搜索路径和 PATH 环境变量设置正确,因为没有 VirtualTreesR16.dcp。只有 VirtualTreesR.dcp。

    解决方案是修复“requires”子句,使其如下所示:

    requires designide, VirtualTreesR;

    希望对你有帮助。

    附:这是一个非常令人沮丧的问题,因为这种名称不匹配并不明显,而且它的片段分散在不同的设置中。如果 Delphi 指定了它试图找到的确切文件(例如,'VirtualTreesR.dcp' 而不是 'VirtualTreesR'),它可能会更具体。

    【讨论】:

      【解决方案5】:

      通过 Delphi 项目管理器上下文菜单添加所需的包时,有时会收到“找不到包”错误。 (打开一个包,右键“Requires”,选择“Add Reference...”命令)

      相反,通过手动编辑包项目文件来添加所需的包更容易:

      1. 在项目管理器中选择包。 MyPackage.bpl 例如。
      2. Ctrl+V 打开项目文件。
      3. 将所需的包添加到 requires 子句。
      4. 确保所需的包 *.DCP 文件位于包搜索路径中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-10
        • 2014-10-28
        • 1970-01-01
        • 2014-05-18
        • 2019-11-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-23
        相关资源
        最近更新 更多