PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

QT5 :Échec du chargement du pilote psql dans Windows

Très probablement, il ne parvient pas à lier dynamiquement le qsqlpsql.dll fichier lorsqu'il invoque LoadLibrary dessus après que votre programme ait demandé ce pilote. LoadLibrary renvoie le même code d'erreur lorsque la DLL cible est manquante que lorsque l'une des DLL dont dépend la DLL cible est manquante ou ne peut pas être chargée . Donc, Qt obtient très probablement une erreur "bibliothèque introuvable" et suppose "oh, le pilote Pg ne doit pas être dans cette version de Qt", alors qu'en fait il est présent et ne se charge pas en raison de problèmes de dépendance, de problèmes de compatibilité de bibliothèque, etc.

Pour déterminer pourquoi il ne se charge pas, vous pouvez, comme l'a suggéré Frank Osterfeld, utiliser un outil comme Dependency Walker (depends.exe ) . Si vous compilez du code 32 bits sur une machine 64 bits, vous souhaitez obtenir le marcheur de dépendances 32 bits.

Il est fort probable qu'il échoue car il existe une dépendance de qsqlpsql.dll manquant - soit libpq.dll , ou l'une des bibliothèques que libpq la construction nécessite. Le marcheur de dépendance aidera à isoler cela. Il est également possible que vous essayiez de charger un libpq.dll 64 bits dans un programme 32 bits, ou vice versa.

Vous pouvez également trouver instructif d'exécuter votre programme avec Process Monitor en le traçant. Cela produira beaucoup de détails sur les fichiers qu'il tente d'ouvrir / d'examiner, entre autres, et peut aider à retrouver des choses comme un PATH inattendu problèmes.

Si vous êtes toujours bloqué, vous avez toujours la possibilité d'utiliser un débogueur.