2012-01-21 98 views
2

我有這樣的錯誤:爲什麼編譯器不能在我的包中包含外部DCU?

E2411 Unit %s in package %s refers to unit %s which is not found in any package. Packaged units must refer only to packaged units (Delphi)

Delphi幫助是非常有益的,它說:

No further information is available for this error or warning.

爲什麼我不能指的不是包的一部分,一個單位?

UPDATE:

永無止境的故事:把文件在其自己的包打破別的東西:Unit GIFImg was compiled with a different version of CCR.Exif.Consts.SOutOfResources 這就是爲什麼我希望不要把文件在其自己的包。

+0

嗨大衛。我看到了這個消息。但我想明白爲什麼。爲什麼編譯器不能在我的包中包含外部DCU? – Ampere

+0

@DavidHeffernan,它可以做一些澄清。就目前而言,危險地接近於循環定義。 –

回答

4

您不能引用不屬於包的一部分的單元,因爲包需要是自包含的軟件。這意味着軟件包必須包含它使用的所有單元,或者通過它的require子句中的軟件包使它們可用。

爲了解決這個錯誤,您可以

  • 包括在包的單位,你正在建設,或
  • 添加其中包含單位的要求正在構建的包的列表中選擇包。
+0

因此,我認爲這不是「我無法編譯該文件」,而是「我不(不應該)編譯該文件」。 – Ampere

+0

@Altar:嗯,是的,我想你可以這樣說,因爲編譯器不會處理隱式包含的單元(已使用但未明確包含在任何必需的軟件包或正在構建的軟件包中) –

2

你的問題似乎是

Why does the compiler emit this error?

如果引用單元A那麼參考單元A需要解決。如果它在當前包中找不到,或者在require子句中找不到另一個包,那麼編譯器根本無法繼續。

你也問:

Why the compiler cannot include an external DCU in my package?

您可以將單元只需添加到您的包中包含您.dpk文件的條款。

+0

將單元I需要在它自己的包中打破我的德爾福:http://stackoverflow.com/questions/8955973/unit-gifimg-was-compiled-with-a-different-version-of-ccr-exif-consts-soutofresou – Ampere

相關問題