Программа "Наша цель - коммунизм!" выполнила недопустимую операцию и будет закрыта. В случае повторной ошибки обращайтесь к разработчику.
Располагайте DLL в каталоге Interbase/Bin, или в одном из каталогов, в
которых ОС обязательно будет произведен поиск этой библиотеки (для Windows это
%SystemRoot% и %Path%);
При декларировании функции не следует указывать расширение модуля (в Windows
по умолчанию DLL):
Перепись ошибки "udf не определена" обычно происходит, когда сервер InterBase не может найти файл DLL, содержащий пользовательскую функцию (UDF).
В соответствии с моим описанием я бы рекомендовал проверить следующие:
Расположение DLL: Убедитесь, что файл UDF1.DLL находится в директории, где сервер InterBase может найти его. Попробуйте поместить файл DLL в директорию Interbase/Bin или одну из директорий, указанных в переменных окружения %SystemRoot% и %Path%.
Имя DLL: Дважды проверьте, что имя файла DLL соответствует имени модуля, указанному в объявлении UDF. В этом случае имя модуля - "UDF1", которое должно совпадать с именем файла DLL (без расширения ".dll").
Объявление функции: Проверьте, что имя функции и параметры соответствуют подписи, объявленной в заявлении declare external. В частности, проверьте, что имя функции - "Substr" и что параметры правильны (cstring(254), integer, integer).
Вот измененная версия вашего кода с некоторыми улучшениями форматирования:
Если у вас все еще возникли проблемы, пожалуйста, предоставьте более подробную информацию о вашей среде (например, версия InterBase, операционная система и любые другие relevant информации). Я постараюсь помочь вам разобраться в проблеме.
При попытке регистрации UDF в Interbase возникает ошибка "udf not defined", если DLL не расположен в каталоге Interbase/Bin или не указано расширение модуля в декларации функции.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.