Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

UDF Interbase [D7, IB6.x]


Страницы:   1 2 3

Pul ©   (2004-01-15 13:38:00) 

Подскажите пожалуйста, с какими настройками винды или с чем еще может быть связана следующая ошибка. Не найдена точка входа в UDF функцию. Причем на одном сервере работает без проблем, на другом не хочет. DLL-ка лежит в обоих случаях в одном и том же месте, декларация в базе есть, регистр в названиях одинаков. Ни с чем больше, кроме каких-то настроек винды или interbase сервера я связи не вижу. Используется Interbase Firebird.


kaif   (2004-01-22 14:02:00) [1]

2 Pul (22.01.04 12:57) [41]
А как проверить зависимость моей dll-ки от других?

Ну так tdump для этого и предлагалось использовать. С помощью tdump (или аналогичных утилит) можно увидеть, какие dll импортируются твоей dll и требуются при ее запуске. Правда, так не увидишь динамически подгружаемые dll, но этого может и не понадобится. С очень большой вероятностью твоя dll что-то использует, чего на компе просто нет.
Ты тест-то попробовал написать и запустить (загрузка dll и вызов функции из нее)?
Digitman © (16.01.04 18:33) [21]
Тест многое покажет.


Pul   (2004-01-22 12:57:00) [2]

>>Digitman © (21.01.04 16:02) [40]
Утилиту нашел, и выяснилось, что в списке используемых модулей моей DLL-ки нет, а стандартная ib_udf.dll - есть.
Фантастика, значит это сервер не может найти файл, но он же лежит в той же папке, что и ib_udf.dll.
А как проверить зависимость моей dll-ки от других?


Digitman   (2004-01-21 16:02:00) [3]


> Это просто список импортируемых из DLL функций, а уж никак
> не список подключенных в данный момент.


для получения инф-ции о процессах, использующих в дан.момент те или иные модули, можно воспользоваться иными существующими утилитами (просто поищи в сети)

в кр.случае можешь воспользоваться моим кодом
http://delphimaster.ru/cgi-bin/forum.pl?id=1074261583&n=5


> Вот почему я не люблю утилиты с командной строкой


возьми из состава MS VisualStudio GUI-утилиту depends.exe - она работает и без ком.строки, т.к. подобно моему примеру (см.ссылку) встраивается в shell


Pul   (2004-01-21 15:19:00) [4]

Vlad © (21.01.04 14:38) [37]
Вот почему я не люблю утилиты с командной строкой


Pul   (2004-01-21 15:15:00) [5]

>> Vlad © (21.01.04 14:38) [37]
спасибо, уже нашел.
Только я в указанном разделе не увидел библиотек с подключаемыми функциями, хотя стандартная фукнция ABS из ib_udf в запросах используется и нормально работает.
Это просто список импортируемых из DLL функций, а уж никак не список подключенных в данный момент.


Vlad   (2004-01-21 14:38:00) [6]


> Pul (21.01.04 14:22) [36]
> Я имел в виду параметры для просмотра библиотек, подключенных
> к приложению


Не поверишь, я имел ввиду тоже самое :-)
Читаем:
Syntax: TDUMP [options] [InputFile] [ListFile] [options]

Библиотеки, требуемые приложением увидишь в разделе Import


Pul   (2004-01-21 14:22:00) [7]

>> Vlad © (21.01.04 14:14) [35]
Я имел в виду параметры для просмотра библиотек, подключенных к приложению
(просто у меня необходимость подобной отладки возникала редко и я раньше пользовался другой прогой, дистрибутив которой я никак не могу найти)


Vlad   (2004-01-21 14:14:00) [8]

tdump /?


Pul   (2004-01-21 14:12:00) [9]

Извините за дурацкий вопрос, напомните пож. параметры командной строки для tdump


Digitman   (2004-01-19 16:51:00) [10]


> kaif © (19.01.04 16:42) [32]


не знаю... автор молчит ... темный лес пока .. с зависимостями


kaif   (2004-01-19 16:42:00) [11]

2 Digitman © (19.01.04 15:28) [29]
Но тестовое приложение с динамической загрузкой библиотеки, которое ты предложил, работает, как пишет автор вопроса. Если бы использовались какие-то dll, которых нет, то, ИМХО, тест бы не работал. А автор пишет, что тест работает. Конечно, стоит в любом случае с помощью tdump посмотреть все dll, которые использует эта dll. У меня был случай, когда по этой причине возникала подобная ошибка.


Digitman   (2004-01-19 15:36:00) [12]

что стоит в USES твоей библ-ки ? перечисли..

еще лучше, если полный текст проекта библ-ки небольшой, привести его сюда


Digitman   (2004-01-19 15:33:00) [13]

к сож., ИБ-сервер (и его клоны) никак не извещают клиента об истинных причинах отказа при попытке задействовать внешнюю ф-цию во внеш.модуле .... "не найдено", мол, и все тут ... проверка зависимостей и путей поиска/загрузки требуемых модулей (пути поиска по умолчанию и пр.) - первое что надо было сделать в этой ситуации ...


Digitman   (2004-01-19 15:28:00) [14]


> Pul (19.01.04 15:10) [27]


> А чем объяснить тот факт


есть еще одно страшное подозрение : твоя библ-ка находится сервером, но при попытке ее загрузки происходит отказ из-за отсутствия на машине неких библиотек, от которых зависит работа твоей библ-ки .. проверяй и разрешай все необходимые зависимости ... возможно твоя библ-ка требует наличия bpl-модулей, которых попросту и в помине нет на проблемной машине


kaif   (2004-01-19 15:20:00) [15]

Проверь, нет ли путаницы русские/английски символы в имени dll. Например, буква "a" может быть русской (чья-то дурацкая шутка). Переименуй вообще эту dll к черту в MMM.DLL и продекларируй такую функцию. Для упрощения экспериментов создай отдельную маленькую базу данных. Без всяких триггеров и процедур.
В любом случае здесь какое-то недоразумение.


Pul   (2004-01-19 15:10:00) [16]

>> Digitman © (19.01.04 14:08) [26]
А чем объяснить тот факт, что стандартные функции нормально работают, а эта - нет, причем лежат эти DLL-ки в одной папке


Digitman   (2004-01-19 14:08:00) [17]


> Pul


после первого же отказавшего обращения IB-сервера к UDF DLL любой утилитой просмотри список модулей процесса IB-сервера

если среди них не присутствует модуль твоей UDF DLL, то проблема - в поиске самой DLL IB-сервером, в противном случае - проблема в ненахождении сервером в ней эксп.ид-ра ANKLIKE


Pul   (2004-01-19 13:45:00) [18]

>> Digitman © (19.01.04 13:07) [23]
Тот же результат.


Vlad   (2004-01-19 13:09:00) [19]

Между 2 и 3 неплохо бы еще сервер перезапустить


Digitman   (2004-01-19 13:07:00) [20]

1. закомментируй на время все ссылки на эту UDF в SP и триггерах, перекомпилируй эти SP/триггеры

2. удали из БД декларацию этой UDF, декларируй ее заново

3. раскомментируй ссылки на UDF в SP и триггерах, , перекомпилируй эти SP/триггеры,

попробуй что получилось


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо