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.