Почему компилятор не может включить внешний DCU в мой пакет? - PullRequest
2 голосов
/ 21 января 2012

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

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

Справка Delphi чрезвычайно полезна и гласит:

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

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

ОБНОВЛЕНИЕ:

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

Ответы [ 2 ]

4 голосов
/ 21 января 2012

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

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

  • включите устройство в комплект, который вы строите, или
  • добавить пакет, содержащий этот блок, в список требуемых пакетов, которые вы собираете.
2 голосов
/ 21 января 2012

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

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

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

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

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

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

...