为什么编译器不能在我的包中包含外部DCU?

时间:2012-01-21 19:12:41

标签: delphi delphi-xe

我有这个错误:

  

E2411包%s中的单位%s是指未找到的单位%s   任何包裹。打包单元必须仅涉及打包单元(Delphi)

Delphi帮助非常有用,它说:

  

此错误或警告无法提供进一步的信息。

为什么我不能引用不属于软件包的单元?

更新:

永无止境的故事:将文件放在自己的包中会破坏其他内容:Unit GIFImg was compiled with a different version of CCR.Exif.Consts.SOutOfResources 这就是为什么我不想把文件放在自己的包中。

2 个答案:

答案 0 :(得分:4)

您不能引用不属于软件包的单元,因为软件包需要是一个独立的软件。这意味着一个包必须包含它使用的所有单元,或者通过其require子句中的包提供它们。

要解决此错误,您可以

  • 在您正在构建的包中包含该单元,或
  • 将包含该单元的包添加到您正在构建的包的require列表中。

答案 1 :(得分:2)

您的问题似乎是

  

为什么编译器会发出此错误?

如果您参考单元A,则需要解决对单元A的引用。如果在当前包中找不到它,或者在requires子句中找不到另一个包,那么编译器根本无法继续。

你也问:

  

为什么编译器不能在我的包中包含外部DCU?

您只需在.dpk文件的contains子句中将单元添加到包中即可。