PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

QT5:Impossibile caricare il driver psql in Windows

Molto probabilmente non riesce a collegare dinamicamente il qsqlpsql.dll file quando invoca LoadLibrary su di esso dopo che il tuo programma ha richiesto quel driver. LoadLibrary restituisce lo stesso codice di errore per quando la DLL di destinazione è mancante come per quando una delle DLL da cui dipende la DLL di destinazione è mancante o non può essere caricata . Quindi Qt molto probabilmente riceve un errore "libreria non trovata" e presuppone "oh, il driver Pg non deve essere in questa build Qt", dove in realtà è presente e non riesce a caricare a causa di problemi di dipendenza, problemi di compatibilità della libreria, ecc.

Per determinare il motivo per cui non riesce a caricare, puoi, come suggerito da Frank Osterfeld, utilizzare uno strumento come Dependency Walker (depends.exe ) . Se stai compilando codice a 32 bit su una macchina a 64 bit, vuoi ottenere il walker delle dipendenze a 32 bit.

È molto probabile che fallisca perché c'è una dipendenza da qsqlpsql.dll mancante - o libpq.dll o una delle librerie che libpq costruire richiede. Il deambulatore delle dipendenze aiuterà a isolarlo. È anche possibile che tu stia tentando di caricare un libpq.dll a 64 bit in un programma a 32 bit o viceversa.

Potresti anche trovare utile eseguire il tuo programma con Process Monitor che lo traccia. Questo produrrà molti dettagli su quali file tenta di aprire/esaminare, tra le altre cose, e può aiutare a rintracciare cose come PATH imprevisto problemi.

Se sei ancora bloccato, c'è sempre la possibilità di passare attraverso un debugger.