Delphi 10.x «Не удается разрешить имя устройства» для вновь установленной библиотеки - PullRequest
0 голосов
/ 18 апреля 2019

Я столкнулся со следующей загадочной ситуацией при установке сторонней библиотеки, в данном случае Virtual Treeview, которую я буду использовать в качестве примера.

После выполнения процедуры установки из INSTALL.txt новые компоненты появились в палитре компонентов Delphi и могут быть добавлены в форму.

Однако, создание одного из предоставленных примеров проектов, в этом случае «Minimal» завершается неудачно, говоря:

'Невозможно разрешить имя устройства "VirtualTrees" в строке xxx ", которое является оператором использования, в котором указан VirtualTrees.

В соответствии с этим признаком в редакторе исходного кода (использует) VirtualTrees и объявления вспомогательных компонентов были отмечены красными загогулами, указывающими на то, что идентификатор не объявлен или не разрешен.

Поставляемый демонстрационный проект был настроен на работу с Windows 32. Но, что удивительно, если я переключу цель на Windows 64, он скомпилируется.

Установка состояла из:

  1. Распакуйте прилагаемый zip-файл туда, где вы найдете исходные пакеты.

  2. В Delphi откройте группу проектов: Файл> Открыть .... VirtualTreeView.groupproj

  3. После загрузки в дереве проекта щелкните правой кнопкой мыши VirtualTreesD26.bpl> Установить.

  4. Добавьте папку «Source» VirtualTreeView в путь к библиотеке, используя "Инструменты> Параметры> Язык> Параметры Delphi> Библиотека> Путь к библиотеке> [...]"

Что позволяет IDE знать о компоненте, но затем не удается скомпилировать для Windows 32, но все же удачно для Windows 64?

Ответы [ 2 ]

2 голосов
/ 18 апреля 2019

Каждая цель имеет свой собственный путь к библиотеке.Вы добавили пути VT к цели Win64, но должны сделать то же самое для цели Win32.

В качестве альтернативы, удалите пути VT из пути поиска цели Win64 и вместо этого добавьте их к применяемой целико всем проектам, и тогда они будут унаследованы другими проектами.

В диалоговом окне параметров есть раскрывающийся элемент управления, который позволяет указать цель, к которой должны применяться ваши настройки.

0 голосов
/ 22 апреля 2019

Короткий ответ: путь к библиотеке задан неправильно. И спасибо Дэвиду Хеффернану за то, что он указал на это.

Но как и почему?

Ключевым моментом, который я пропустил, было то, что диалоговое окно «Параметры библиотеки» фиксирует различные наборы путей, применимые к каждой из различных целей платформы. Таким образом, в верхней части диалогового окна «Параметры библиотеки» есть раскрывающийся список «Выбранная платформа», который определяет, к какой платформе будут применяться параметры, указанные ниже.

Чтобы можно было создать приложение Win 32 VCL, необходимо специально указать путь к библиотеке для Windows 32, что означает установку раскрывающегося списка «Выбранная платформа» на Windows 32 перед выполнением шага добавления пути в исходный каталог Virtual TreeView.

Очевидно, ретроспективно, и, возможно, этот пост SO поможет связать «Не удается разрешить имя устройства» с этой потенциальной причиной.

Есть несколько замечаний по поводу того, почему это происходит.

a) Пользователи, пришедшие из более старых версий Delphi, могут быть знакомы с этим диалоговым окном «Параметры библиотеки» до того, как он обрабатывает несколько платформ, поэтому не понимают, что теперь у него есть функция «Выбранная платформа».

b) На моей новой Delphi 10.3, которая является новой, выпадающий список «Выбранная платформа» возвращается к Windows 64 каждый раз, когда вы открываете диалоговое окно «Параметры библиотеки». Кажется, он не координируется с платформой открытого в данный момент проекта и не запоминает, что вы в последний раз установили. Так что легко упустить, что он не настроен на платформу, на которую вы рассчитывали, если только вы не знаете, как выглядеть явно.

Также может быть полезно знать, что хотя эта функция устанавливает путь к библиотеке для всей установки Delphi («глобально»), на уровне проекта существуют перекрывающиеся настройки, к которым можно получить доступ следующим образом (например, для проекта «Минимальный») :

Дерево проекта, ProjectGroup1> Minimal.exe> ​​Конфигурации сборки> Щелкните правой кнопкой мыши> (диалоговое окно параметров проекта) Построение> Delphi Compiler> Target (Все конфигурации или конкретная цель)> Слот "Путь поиска".

Delphi, по-видимому, объединяет «Путь поиска» с Инструментами> ...> Настройки библиотеки> Путь к библиотеке.

Наконец, для Virtual Treeview его сопровождающий Joachim Marder добавил примечание к инструкциям по установке, чтобы избежать описанной здесь ловушки.

...