Ошибка, которую я получаю, выглядит так:
[DCC Fatal Error] myunit3.pas(244): E2411 Блок XBAT в пакете B_Dsgn ссылается на блок QBEE, который не найден ни в одном пакете. Упакованные блоки должны ссылаться только на упакованные блоки
Мне нужно знать, что на самом деле означает эта ошибка, с которой я столкнулся, и, если возможно, как устранить неполадки и решить такие проблемы, особенно когда факты, указанные в сообщении об ошибке, неверны (блоки на самом деле ссылаются на другие блоки в других действительных пакетах).
Такие проблемы связаны с зависимостями пакетов. У меня возникла интересная проблема с серией из трех пакетов designtime и трех пакетов runtime, связанных следующим образом:
Самое странное в этом то, что каждый раз, когда я очищаю и восстанавливаю пакет, я получаю другое имя блока в ошибке. (Выше показано, что блок XBAT относится к блоку QBEE).
Другая странная вещь заключается в том, что он ссылается на модули, которые находятся в зависимости верхнего уровня и являются частью пакета, который уже был собран.
Шаги;
Поскольку я сомневаюсь, что кто-то может сказать мне, как именно это исправить, я ищу шаги по устранению сложной проблемы зависимости в пакете. Буквальное значение приведенной выше ошибки предполагает, например, что у меня должно быть соответствующее сообщение о неявно связанном блоке, которого у меня нет. Я добавил все неявно используемые единицы в базовые пакеты A, и B, так что предупреждений о неявных единицах нет.
Следующей моей идеей было разделить выходные папки DCU для каждого пакета, чтобы выходные папки DCU из одного пакета не сбивали компилятор с толку. Теперь я даже не могу собрать пакеты.
Обновление Я попробовал поиграть с опциями Explicit Rebuild
и Rebuild as Needed
. Я обнаружил, что эта ошибка связана с включенной опцией 'Rebuild as Needed'. Когда она выключена, пакеты не работают с другими ошибками, более существенными. Мне кажется странным, что компилятор выдает странные ошибки, которые можно отключить, выключив Rebuild as needed
. Есть идеи, что происходит?
Обновление 2 Основная проблема не решается включением или отключением явной пересборки. Вместо того чтобы получить эту ошибку, я получаю раздражающие проблемы с пакетами во время выполнения/дезайна, которые приводят к набору пакетов, которые не могут быть загружены одновременно. (Невозможно загрузить пакет foo, потому что он содержит блок bar, который также находится в пакете bat. Хотите ли вы попытаться загрузить этот пакет при следующей загрузке проекта?).