PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

QT5:Falha ao carregar o driver psql no Windows


Provavelmente está falhando ao vincular dinamicamente o qsqlpsql.dll arquivo quando invoca LoadLibrary nele depois que seu programa solicitar esse driver. LoadLibrary retorna o mesmo código de erro para quando a DLL de destino está ausente e quando uma das DLLs da qual a DLL de destino depende está ausente ou não pode ser carregada . Portanto, o Qt possivelmente recebe um erro de "biblioteca não encontrada" e assume "oh, o driver Pg não deve estar nesta compilação do Qt", onde na verdade está presente e falhando ao carregar devido a problemas de dependência, problemas de compatibilidade de biblioteca, etc.

Para determinar por que está falhando ao carregar, você pode, como Frank Osterfeld sugeriu, usar uma ferramenta como Dependency Walker (depends.exe ) . Se você estiver compilando código de 32 bits em uma máquina de 64 bits, você deseja obter o walker de dependência de 32 bits.

É bem provável que esteja falhando porque há uma dependência de qsqlpsql.dll ausente - ou libpq.dll , ou uma das bibliotecas que libpq construir requer. O andador de dependência ajudará a isolar isso. Também é possível que você esteja tentando carregar um libpq.dll de 64 bits em um programa de 32 bits, ou vice-versa.

Você também pode achar informativo executar seu programa com o Process Monitor rastreando-o. Isso produzirá muitos detalhes sobre quais arquivos ele tenta abrir/examinar, entre outras coisas, e pode ajudar a rastrear coisas como PATH inesperado questões.

Se você ainda estiver travado, sempre há a opção de usar um depurador.