Ошибка, которую я получаю, выглядит следующим образом:
[DCC Fatal Error] myunit3.pas(244): E2411 Unit XBAT in package B_Dsgn refers to unit QBEE which is not found in any package. Packaged units must refer only to packaged units
Мне нужно знать, что на самом деле означает эта ошибка, и, если возможно, как устранить неполадки и решить такие проблемы,особенно если факты, указанные в сообщении об ошибке, неверны (единицы на самом деле относятся к другим единицам в других допустимых пакетах).
Такие проблемы связаны с зависимостями пакетов.У меня возникла интересная проблема с серией из трех пакетов времени разработки и трех пакетов времени выполнения, связанных следующим образом:
Самое странное, что каждый раз, когда я чищу и перестраиваю,Я получаю другое имя устройства в ошибке.(Показано выше, что Unit XBAT относится к модулю QBEE.)
Другая странная вещь заключается в том, что он ссылается на модули, которые находятся в зависимости верхнего уровня и являются частью уже созданного пакета.
Шаги;
- Компиляция A, это работает.
- Компиляция A_Dsgn, это работает.
- Компиляция B, это работает.
- Скомпилируйте B_Dsgn, он работает.
- Скомпилируйте C, и он завершится неудачно с этой ошибкой E2411.
Поскольку я сомневаюсь, что кто-нибудь может сказать мне, как это исправить, я ищушаги для устранения сложной проблемы зависимости в пакете.Буквальное значение вышеуказанной ошибки предполагает, например, что у меня должно быть соответствующее сообщение о неявной связанной единице, которого у меня нет.Я добавил все неявно используемые модули в базовые пакеты A и B, чтобы не было никаких неявных предупреждений о модулях.
Моя следующая идея состояла в том, чтобы отделить папки вывода DCU для каждого пакета, чтобы предотвратить выходы DCUот одного из запутанного компилятора.Теперь я не могу даже собрать пакеты.
Обновление Я пытался играть с опциями Explicit Rebuild
и Rebuild as Needed
.Я обнаружил, что эта ошибка связана с включением функции «Перестроить по необходимости».Когда он выключен, пакеты терпят неудачу с другими ошибками, которые более важны.Я нахожу странным, что компилятор выдаёт странные ошибки, которые можно отключить, отключив Rebuild as needed
.Есть идеи, что происходит?
Обновление 2 Основная основная проблема не решается путем включения или выключения явного перестроения.Вместо того, чтобы получать эту ошибку, я получаю досадные проблемы с пакетами времени выполнения / разработки, которые приводят к набору пакетов, которые не могут быть загружены одновременно.(Невозможно загрузить пакет foo, поскольку он содержит панель модулей, которая также находится в пакете bat. Хотите ли вы попытаться загрузить этот пакет при следующей загрузке проекта?).