PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

QT5:Fehler beim Laden des psql-Treibers in Windows

Höchstwahrscheinlich kann die qsqlpsql.dll nicht dynamisch verknüpft werden Datei, wenn es LoadLibrary aufruft darauf, nachdem Ihr Programm diesen Treiber anfordert. LoadLibrary gibt denselben Fehlercode zurück, wenn die Ziel-DLL fehlt, wie wenn eine der DLLs, von denen die Ziel-DLL abhängt, fehlt oder nicht geladen werden kann . Daher erhält Qt möglicherweise den Fehler "Bibliothek nicht gefunden" und nimmt an, "oh, der Pg-Treiber darf nicht in diesem Qt-Build enthalten sein", obwohl er tatsächlich vorhanden ist und aufgrund von Abhängigkeitsproblemen, Bibliothekskompatibilitätsproblemen usw. nicht geladen werden kann.

Um festzustellen, warum es nicht geladen werden kann, können Sie, wie Frank Osterfeld vorgeschlagen hat, ein Tool wie Dependency Walker (depends.exe ) . Wenn Sie 32-Bit-Code auf einem 64-Bit-Rechner kompilieren, möchten Sie den 32-Bit-Abhängigkeits-Walker erhalten.

Es ist sehr wahrscheinlich, dass es fehlschlägt, weil es eine Abhängigkeit von qsqlpsql.dll gibt fehlt - entweder libpq.dll , oder eine der Bibliotheken, die libpq bauen erfordert. Dependency Walker hilft dabei, dies zu isolieren. Es ist auch möglich, dass Sie versuchen, eine 64-Bit-libpq.dll zu laden in einem 32-Bit-Programm oder umgekehrt.

Möglicherweise finden Sie es auch informativ, Ihr Programm mit Process Monitor auszuführen, der es protokolliert. Dies wird unter anderem viele Details darüber liefern, welche Dateien es zu öffnen / zu untersuchen versucht, und kann dabei helfen, Dinge wie den unerwarteten PATH aufzuspüren Probleme.

Wenn Sie immer noch nicht weiterkommen, gibt es immer noch die Möglichkeit, mit einem Debugger durchzugehen.