Программа не находит dll

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Программа не находит dll

Сообщение Climber »

Программа использует набор компонентов zeos для доступа к СУБД postgres. Тестировалась на 4 компах (мой рабочий, мой домашний, комп жены дома, комп коллеги на работе), все с Win XP SP2. Работает везде, кроме компа коллеги по работе. У него программа ругается на отсутствие libpq.dll. Пробовал анализировать Dependency Walker'ом, обнаружились следующие побробности:
при попытке обращения к библиотеке возникает ошибка "LoadLibraryA("libpq.dll") returned NULL. Error:" дальше много квадратиков и в скобках 14001.
Следущая обшибка:
"Error: Side-by-side configuration information for libpq.dll contains errors." дальше опять много квадратиков и в скобках 14001.
Подскажите, с какого бока надо пробовать решать проблему? Это вина lazarus'а, zeos'а или Windows?
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Надо заменить DLL-ку на том компьютере где не работает.
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Сообщение Climber »

Беда в том, что dll одна и та же. Папка с файлами (exe и все dll) копируется с моего компа на общий сетевой диск, после чего забирается с другого компьютера (копированием).
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Тогда нужно лично убедиться, что на компе коллеги программа обращается к идентичной DLL-ке, что и на других компах, где программа правильно работает.
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

Может стоит все библиотеки положить в System32? Такое бывает если с реестром проблемы
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

Vadim писал(а):Тогда нужно лично убедиться, что на компе коллеги программа обращается к идентичной DLL-ке,

угу например используя filemon
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Буквы "side-by-side configuration" в сообщении об ошибке говорят о том, что проблема не с dll, а с манифестом к ней. В Windows больше нет dll hell, его заменили на manifest hell (c). Такую dll куда ни положи, нигде ее видно не будет, пока не положишь куда надо еще и нужный манифест. Куда что класть - знают, похоже, только официальные инсталляторы.

Причем, раз не грузится libpq.dll, то проблема скорее всего не в ней самой, а в одной из тех dll, от которых она зависит - в какой-нибудь msvcrt.dll.
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Сообщение Climber »

Да, дело было в манифесте. Мне на другом форуме указали на папку WinSxS, после некоторого изучения которой оказалось, что там у меня есть некоторые файлы, которых нет у моих коллег. После простого копирования недостающих файлов вроде заработало.
Ответить