2012-01-21 1 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 Help является чрезвычайно полезным и говорит:

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

Hi David. Я видел сообщение. Но я хочу понять, почему это так. Почему компилятор не может включать внешнее DCU в моем пакете? – Ampere

+0

@ Давид Хеффернан хорошо, он мог бы сделать с некоторыми разъяснениями. В ее нынешнем виде это опасно близко к круговому определению. –

ответ

4

Вы не можете обращаться к устройству, которое не является частью пакета, потому что пакет должен быть автономным программным обеспечением. Это означает, что пакет должен содержать все используемые им единицы или иметь их доступными через пакеты в своем предложении.

Чтобы решить эту ошибку можно либо

  • включить аппарат в пакет, который вы строите, или
  • добавить пакет, который содержит, что блок к требует список пакета, который вы строите.
+0

Итак, поскольку я думал, что это не вопрос «я не могу скомпилировать этот файл», а скорее «я не (не должен) компилировать этот файл». – Ampere

+0

@Altar: hmm, да, я думаю, вы могли бы так выразиться, поскольку компилятор не будет иметь дело с единицами, которые неявно включены (используются, но не включены явно в любой требуемый пакет или создаваемый пакет) –

2

Ваш вопрос, кажется,

Why does the compiler emit this error?

Если вы обратитесь к блоку А, то, что ссылка на кондиционера должна быть решена. Если он не может быть найден в текущем пакете или другом пакете в предложении require, компилятор просто не может продолжить.

Вы также спросить:

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

Вы можете просто добавить модуль в пакет в содержит положение о файле .dpk.

+0

Ввод устройства I потребность в собственной упаковке разбивает мой Delphi: http://stackoverflow.com/questions/8955973/unit-gifimg-was-compiled-with-a-different-version-of-ccr-exif-consts-soutofresou – Ampere