Mest troligt misslyckas det att dynamiskt länka qsqlpsql.dll
fil när den anropar LoadLibrary
på den efter att ditt program begär den drivrutinen. LoadLibrary
returnerar samma felkod för när mål-DLL-filen saknas som för när en av de DLL-filer som mål-DLL-filen beror på saknas eller inte kan laddas . Så Qt får troligen ett "bibliotek inte hittat"-fel och antar "åh, Pg-drivrutinen får inte vara i denna Qt-byggnad", där den faktiskt finns och inte kan laddas på grund av beroendeproblem, bibliotekskompatibilitetsproblem, etc.
För att avgöra varför den inte kan laddas kan du, som Frank Osterfeld föreslog, använda ett verktyg som Dependency Walker (depends.exe
)
. Om du kompilerar 32-bitars kod på en 64-bitars maskin vill du skaffa 32-bitars dependency walker.
Det är ganska troligt att det misslyckas eftersom det finns ett beroende av qsqlpsql.dll
saknas - antingen libpq.dll
, eller ett av biblioteken som libpq
bygga kräver. Dependency walker hjälper till att isolera detta. Det är också möjligt att du försöker ladda en 64-bitars libpq.dll
i ett 32-bitarsprogram, eller vice versa.
Du kan också tycka att det är informativt att köra ditt program med Process Monitor som spårar det. Detta kommer att producera mycket detaljer om vilka filer den försöker öppna/undersöka, bland annat, och kan hjälpa till att spåra saker som oväntad PATH
problem.
Om du fortfarande har fastnat finns det alltid möjlighet att gå igenom med en debugger.