Delphi: необходимый пакет не найден - PullRequest
12 голосов
/ 18 апреля 2009

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

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

Ответы [ 5 ]

14 голосов
/ 18 апреля 2009

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

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

9 голосов
/ 18 апреля 2009

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

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

2 голосов
/ 03 апреля 2013

Возможно, что имя требуемого пакета неправильно указано в предложении '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»).

1 голос
/ 18 апреля 2009

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

0 голосов
/ 10 ноября 2017

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

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

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