FireBird Emedded. "Library GDS32.DLL not found in the p

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
m-axic
Сообщения: 2
Зарегистрирован: 04 фев 2005, 15:59

FireBird Emedded. "Library GDS32.DLL not found in the p

Сообщение m-axic » 04 фев 2005, 16:17

"Library GDS32.DLL not found in the path" - такая ошибка вылетает при запуске EXE-файла. GDS32.DLL и др. обязательные файлы (releasenotes) в каталоге присутствует :)

http://www.dore.ru/perl/nntp.pl?f=1&gid=9&mid=60554 - тут предложено решение данной проблемы (msvcrt.dll, msvcp60.dll, ws2_32.dll - положить в тек. каталог).
Но даже три DLL'ки в каталоге EXE файла не всегда помогают, а на некоторых Виндах (98-х) где без этих DLL работало, даже наооборот стала выскакивать эта ошибка.

msvcrt.dll, msvcp60.dll, ws2_32.dll - разные на разных виндах. И соответственно надо чтобы в зависимости от версии винды сипользовались те или иные версии этих DLL.
Как это сделать красиво?
Как некрасивый вариант: сделать каталоги Win98se, win98, win95, win2000, winme, winxp и программу Loader.exe которая определяла бы версию и запускала EXE из какталога с соответств. DLL. но это изврат, хотя скорее всего бы работало.

Вот такая беда... Есть еще какие-нить варианты?

p.s. привет Дмитрию...

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 фев 2005, 16:26

я проверил через tdump fbembed.dll - ему точно надо msvcrt.dll и msvcp60.dll. И Winsock2, что есть везде с Windows 98 SE2.
Но даже три DLL'ки в каталоге EXE файла не всегда помогают,
значит, не хватает чего-то, что уже нужно этим dll. выяснить можно через filemon...
msvcrt.dll, msvcp60.dll, ws2_32.dll - разные на разных виндах. И соответственно надо чтобы в зависимости от версии винды сипользовались те или иные версии этих DLL.
Как это сделать красиво?
это нельзя сделать красиво. первые две DLL надо обязательно класть в каталог с fbembed.dll (или ею же, переименованной в gds32.dll). Потому что msvcrt.dll в системе может быть другой, и ее замена может привести к неработоспособности других уже установленных приложений.
Наоборот, использование "системной", а не последней msvcrt.dll, может привести к глюкам в работе fbembed.dll.

Вот такие пироги. А как сделать так, чтобы система правильно сообщала, чего именно ей не хватает для загрузки gds32.dll - я не в курсе, увы.

m-axic
Сообщения: 2
Зарегистрирован: 04 фев 2005, 15:59

Сообщение m-axic » 05 фев 2005, 07:47

Здравствуйте.
Потому что msvcrt.dll в системе может быть другой, и ее замена может привести к неработоспособности других уже установленных приложений.
Я проверял.. все три DLL могут быть "другие". т.е. других ОС.
Я нашел работоспособный вариант, ну пока глюков не было не на 98, не на XP (95 принципиально не рассматриваю :) ). Вот содержимое каталога моей проги, где Приложение.exe - исполняемый модуль:

Код: Выделить всё

BASE - каталог.
INTL - каталог.
TEMP - каталог.
UDF - каталог.
USER - каталог.
firebird.conf
gds32.dll
ib_util.dll
msvcp60.dll
MSVCRT.DLL
WS2_32.DLL
WS2HELP.DLL
setup.exe
Приложение.exe
Autorun.ico
AUTORUN.INF
firebird.log
firebird.msg
Все DLL, кроме gds, взяты с Win98 OSR2.
Опытным путем (без FileMon, пока) было определено, что WS2_32.DLL требует еще WS2HELP.DLL на некоторых WIN98.

Вот как-то так. будут баги сделаю сюда Репорт. Мож кому надо будет.
Пишите.
Всем удачи.

Ответить