“Дублирующие” модули в Delphi по имени, на которые ссылаются компоненты, проблема с компиляцией
-
23-08-2019 - |
Вопрос
Мы используем несколько пакетов компонентов от разных поставщиков, и у двух из них есть модуль "regexp.pas", доступный внутри их структуры каталогов.
Проблема теперь в том, что независимо от порядка, в котором мы их компилируем, один из них жалуется на то, что модуль компилируется с неправильной версией различных других модулей.
Есть ли какой-нибудь способ справиться с этим правильно?
Решение
- Вы должны убедиться, что у вас есть только одна версия этого устройства
- Удалите все dcu (обоих поставщиков), чтобы принудительно скомпилировать все исходные файлы.
- Полностью удалите пакеты 2 поставщика (убедитесь, что все следы каждого из них удалены повсюду).
- Перекомпилируйте и установите по одному за раз.
Другие советы
Никакие два модуля не могут иметь одинаковое имя в любом полностью связанном и загруженном исполняемом файле Delphi, независимо от того, связаны ли они статически или динамически через пакеты.Как вы пришли к выводу, вам придется переименовать тот или иной вариант.
Вы можете использовать это обходное решение.
Как уже говорилось, вы не можете загрузить оба пакета поставщика в IDE вместе.
Однако, если они вам нужны по одному за раз, вы можете запустите два разных профиля IDE используя "-р" переключатель командной строки, присваивающий каждому профилю пользовательское имя.Затем вы могли бы запустить Delphi, используя первый профиль, и установить первый из двух "конфликтующих" пакетов, закрыть IDE и запустить Delphi со вторым профилем, а затем установить другой пакет.
Создайте ярлык для каждого профиля, а затем запустите Delphi, выбрав профиль, который загружает пакет, необходимый для поддержки конкретного проекта.
С уважением, ~/|/|arco.