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.