Подтвердить что ты не робот

Delphi: требуемый пакет не найден

Я пытаюсь построить 3 пакета, A, B и C. A определяет некоторые базовые классы, которые используются в B и C. У меня есть все 3 из них в одной и той же группе проектов, все настроены на вывод к той же пользовательской папке вывода BPL. Эта папка находится в пути поиска для B и C. Но когда я иду на сборку B и C, компилятор задыхается в списке Requires. Msgstr "Требуемый пакет" A "не найден."

Как сообщить B и C, где найти A, чтобы они правильно построили?

4b9b3361

Ответ 1

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

Если это действительно невозможно найти, проверьте, доступны ли все файлы (bpl и dcp) и dcu. Вам нужны оба.

Ответ 2

Если это происходит, когда среда IDE пытается загрузить пакет: папка вывода пакета (куда идут файлы .bpl) должна находиться в вашей переменной среды PATH системы. Пакеты представляют собой статически связанные DLL файлы, Windows должна найти их для их загрузки.

Если это происходит при создании пакетов: все/все ваши выходные каталоги DCP (куда идут файлы .dcp) должны находиться в пути поиска зависимых проектов, чтобы компилятор мог найти скомпилированные пакеты. Вы также можете оставить выходной каталог DCP проекта пакета пустым - в этом случае используется глобальный каталог вывода DCP, установленный в Tools\Options\Library; зависимые проекты затем не должны включать его в свой путь поиска.

Ответ 3

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

У нас есть два пакета - VirtualTreesR.dpk и VirtualTreesD.dpk. VirtualTreesD требует VirtualTreesR. Оба они имеют суффикс "16", поэтому оба они отображаются в окне менеджера проектов Delphi как VirtualTreesR16.bpl и VirtualTreesD16.bpl. Вы можете подумать, что это имена пакетов, но вы ошибаетесь. Имена пакетов по-прежнему являются VirtualTreesR и VirtualTreesD, а не VirtualTreesR16 и VirtualTreesD16.

При компиляции VirtualTreesR.dpk Delphi создает два файла (здесь я не говорю о DCU) VirtualTreesR * 16 *.bpl и VirtualTreesR.dcp. Увидеть разницу?

Затем мы пытаемся скомпилировать VirtualTreesD.dpk и получить ошибку: "[DCC Fatal Error] VirtualTreesD.dpk(35): E2202 Требуемый пакет" VirtualTreesR16 "не найден".

Ошибка происходит из-за того, что в предложении "require" пакета VirtualTreesD.dpk содержатся следующие строки:


    requires
      designide,
      VirtualTreesR16;

Delphi пытается найти VirtualTreesR16.dcp и не удается, даже если путь поиска Delphi и переменная среды PATH установлены правильно, потому что VirtualTreesR16.dcp не существует. Только VirtualTreesR.dcp.

Решение состоит в том, чтобы исправить предложение 'require', чтобы оно выглядело следующим образом:


    requires
      designide,
      VirtualTreesR;

Надеюсь, что это поможет.

P.S. Это довольно неприятная проблема, потому что это несоответствие имени не очевидно, и его фрагменты разбросаны по разным настройкам. Delphi может быть более конкретным, если он указал, какой файл именно он пытался найти (например, "VirtualTreesR.dcp" вместо "VirtualTreesR" ).

Ответ 4

Я бы проверял, где вы пишете файлы .dcp для пакетов. если у вас есть это, проверьте, что в пути поиска каждого пакета есть запись для выходной папки .dcp.

Ответ 5

Я иногда получаю ошибку "package not found" при добавлении необходимых пакетов через контекстное меню Delphi Project Manager. (Откройте пакет, щелкните правой кнопкой мыши "Требуется", выберите команду "Добавить ссылку..." )

Вместо этого проще добавить требуемый пакет, отредактировав файл проекта пакета вручную:

  • Выберите пакет в Менеджере проектов. MyPackage.bpl например.
  • Ctrl+V, чтобы открыть файл проекта.
  • Добавьте требуемый пакет в раздел require.
  • Убедитесь, что требуемый пакет *. DCP файл находится в пути поиска пакета.