Не всегда к имени модуля бывает добавлен префикс - имя области действия этого модуля. Я стараюсь писать программы так, чтобы все модули всегда включали такой префикс. Но как быть со сторонними модулями?
Рассмотрим случай, когда требуется использовать библиотеку OExport в консольном проекте (Embarcadero RAD Studio 10.3.3). Для этого в тестовом примере консольного приложения я подключил модули OExport.pas и OExport_VCL.pas (также я добавил модуль MemTableEh.pas библиотеки EhLib).
Код тестового примера:
При компиляции получаю ошибку, связанную с неразрешенностью компилятором частично определенных имен модулей в OExport_VCL: Компилятор не понимает к чему относится модуль Graphics - к Vcl.Graphics или FMX.Graphics (аналогичная ошибка, если закомментировать OExport_VCL в секции uses, будет с модулем Controls в модуле DBGridEh.pas).Для того, чтоб решить эту проблему, мне пришлось вручную править файл .dproj.
Откроем файл в текстовом редакторе. В самом начале находим узел "FrameworkType".
Необходимо заменить значение с "None" на "VCL"
Чуть ниже найдем "PropertyGroup Condition="'$(Base)'!=''", а внутри него узел "DCC_Namespace"
С похоже проблемой я столкнулся, когда захотел вызвать TFxrReport из консольного приложения. Добавление в uses модуля frxClass, приводит к ошибке компиляции "Unit "Graphics" not found". Проблема решается аналогичным образом
ОтветитьУдалить