Программа использует набор компонентов 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?
Программа не находит dll
Модератор: Модераторы
Надо заменить DLL-ку на том компьютере где не работает.
Беда в том, что dll одна и та же. Папка с файлами (exe и все dll) копируется с моего компа на общий сетевой диск, после чего забирается с другого компьютера (копированием).
Тогда нужно лично убедиться, что на компе коллеги программа обращается к идентичной DLL-ке, что и на других компах, где программа правильно работает.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Может стоит все библиотеки положить в System32? Такое бывает если с реестром проблемы
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Буквы "side-by-side configuration" в сообщении об ошибке говорят о том, что проблема не с dll, а с манифестом к ней. В Windows больше нет dll hell, его заменили на manifest hell (c). Такую dll куда ни положи, нигде ее видно не будет, пока не положишь куда надо еще и нужный манифест. Куда что класть - знают, похоже, только официальные инсталляторы.
Причем, раз не грузится libpq.dll, то проблема скорее всего не в ней самой, а в одной из тех dll, от которых она зависит - в какой-нибудь msvcrt.dll.
Причем, раз не грузится libpq.dll, то проблема скорее всего не в ней самой, а в одной из тех dll, от которых она зависит - в какой-нибудь msvcrt.dll.
Да, дело было в манифесте. Мне на другом форуме указали на папку WinSxS, после некоторого изучения которой оказалось, что там у меня есть некоторые файлы, которых нет у моих коллег. После простого копирования недостающих файлов вроде заработало.
