Почему компилятор не может включить внешний DCU в мой пакет?

У меня есть эта ошибка:

E2411 Единица%s в пакете%s относится к единице%s, которая не найдена ни в одном пакете. Упакованные единицы должны относиться только к упакованным единицам (Delphi)

Delphi Help очень полезна и говорит:

Нет дополнительной информации для этой ошибки или предупреждения.

Почему я не могу сослаться на единицу, которая не является частью пакета?

ОБНОВИТЬ:

Бесконечная история: помещение файла в его собственный пакет нарушает что-то еще: модуль GIFImg был скомпилирован с другой версией CCR.Exif.Consts.SOutOfResources. Вот почему я не хотел помещать файл в свой собственный пакет.

2 ответа

Решение

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

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

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

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

Почему компилятор выдает эту ошибку?

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

Вы также спрашиваете:

Почему компилятор не может включить внешний DCU в мой пакет?

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

Другие вопросы по тегам