Lo más probable es que no pueda vincular dinámicamente el qsqlpsql.dll
archivo cuando invoca LoadLibrary
en él después de que su programa solicite ese controlador. LoadLibrary
devuelve el mismo código de error cuando falta la DLL de destino que cuando falta o no se puede cargar una de las DLL de las que depende la DLL de destino . Entonces, es muy posible que Qt obtenga un error de "biblioteca no encontrada" y asume "oh, el controlador Pg no debe estar en esta compilación de Qt", donde de hecho está presente y no se carga debido a problemas de dependencia, problemas de compatibilidad de la biblioteca, etc.
Para determinar por qué no se carga, puede, como sugirió Frank Osterfeld, usar una herramienta como Dependency Walker (depends.exe
)
. Si está compilando código de 32 bits en una máquina de 64 bits, desea obtener el andador de dependencias de 32 bits.
Es bastante probable que falle porque hay una dependencia de qsqlpsql.dll
falta - ya sea libpq.dll
, o una de las bibliotecas que libpq
construir requiere. El caminante de dependencia ayudará a aislar esto. También es posible que esté intentando cargar un libpq.dll
de 64 bits en un programa de 32 bits, o viceversa.
También puede resultarle informativo ejecutar su programa con Process Monitor rastreándolo. Esto producirá una gran cantidad de detalles sobre qué archivos intenta abrir/examinar, entre otras cosas, y puede ayudar a rastrear cosas como PATH
inesperados. problemas.
Si sigues atascado, siempre existe la opción de avanzar paso a paso con un depurador.