Delphi:未找到所需的包

Delphi:未找到所需的包,delphi,path,delphi-2009,packages,Delphi,Path,Delphi 2009,Packages,我正在尝试构建3个包,A、B和C。A定义了一些在B和C中使用的基类。我将所有3个基类都放在同一个项目组中,都设置为输出到同一个自定义BPL输出文件夹。此文件夹位于B和C的搜索路径中。但当我转到构建B和C时,编译器会阻塞Requires列表。“找不到所需的包“A”。” 我如何告诉B和C在哪里找到A,这样他们才能正确构建?要么找不到包,要么编译器搞混了。在后一种情况下,重启有时会有所帮助。然后按顺序从所有包手动生成 如果确实找不到,请检查是否所有包(bpl和dcp)和dcu文件都可用。两者都需要。我

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


我如何告诉B和C在哪里找到A,这样他们才能正确构建?

要么找不到包,要么编译器搞混了。在后一种情况下,重启有时会有所帮助。然后按顺序从所有包手动生成


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

我会检查以确保您在哪里为包编写.dcp文件。完成此操作后,请检查每个包的搜索路径是否包含.dcp输出文件夹的条目。

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

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

可能是您试图编译的包的“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所需的包‘VirtualTreesR16’”

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


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

解决方案是修复“requires”条款,使其看起来如下所示:


    requires
      designide,
      VirtualTreesR;
希望能有帮助

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

在通过Delphi项目管理器上下文菜单添加所需包时,我有时会收到“未找到包”错误。(打开包,右键单击“需要”,选择“添加引用…”命令)

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

  • 在项目管理器中选择包<例如,code>MyPackage.bpl
  • Ctrl+V
    打开项目文件
  • 将所需的包添加到requires子句
  • 确保所需的包*.DCP文件位于包搜索路径中
    这就是问题所在。我也需要告诉它在哪里可以找到DCP文件。曾经有一次我很纠结于这个问题。现在有一个DCP文件存在这个问题,但是其他一些东西让delphi不安,它无法读取DCP文件,再多的重新启动都没有帮助,也无法重建。验证一下,即使像你这样的超级明星也会遇到这样的问题!(你在这里帮了我很多次)。谢谢你明确的问题帖子。我也有同样的问题。文件已存在,文件夹已退出,路径已设置。德尔福说它找不到包裹。它不喜欢DCP文件、BPL文件或文件夹/路径配置。很好。哇,BPL文件夹不在你的路径中。IDE应该抱怨这一点。