1

我试图在 qt 上加载 psql 但没有成功。我的代码:

QApplication a(argc, argv);
QSqlDatabase::addDatabase("QPSQL");
MainWindow w;
w.show();
return a.exec();

我启用了 QT_DEBUG_PLUGINS。输出是:

“插件'C:/Qt/5.1.1/mingw48_32/plugins/sqldrivers/qsqlpsql.dll'使用不兼容的Qt库。(不能混合调试和发布库。)”不是插件QFactoryLoader :: QFactoryLoader()看“ C:/Qt/5.1.1/mingw48_32/plugins/sqldrivers/qsqlpsqld.dll" 从插件元数据中获取密钥 ("QPSQL7", "QPSQL") QFactoryLoader::QFactoryLoader() 检查目录路径 "C:/build-Hello -Desktop_Qt_5_1_1_MinGW_32bit-Debug/debug/sqldrivers” ... 加载库“C:/Qt/5.1.1/mingw48_32/plugins/sqldrivers/qsqlpsqld.dll” QLibraryPrivate::loadPlugin 在“C:/Qt/5.1.1/ 上失败” mingw48_32/plugins/sqldrivers/qsqlpsqld.dll" : "无法加载库 C:/Qt/5.1.1/mingw48_32/plugins/sqldrivers/qsqlpsqld.dll: 找不到指定的模块。" QSql数据库:

我的配置:

- Windows 7 Enterprise
- Qt Creator 2.8.1
- Qt 5.1.1
- Postgre 9.2
- C:\PostgreSQL\9.2\bin; C:\PostgreSQL\9.2\lib added to PATH

我已经为 libpg.dll 运行了依赖walker。两个缺失的依赖项:

  • GPSVC.DLL
  • IESHIMS.DLL

似乎在这些步骤之后,我的努力将变得不那么有条理“只是尝试一些东西......”。

4

3 回答 3

1

有同样的问题。这通常是因为您使用 32 位 Qt 和 64 位 Postgresql。我下载了 32 位 postgresql,将路径(在 Qt creator 中)更改为 32 位 postgre 库,一切正常。

使用:Qt 5.2.0、32 位(来自 SDK)PostgreSQL 9.3(x86)

于 2014-03-10T16:11:07.600 回答
1

第一条错误消息或多或少说明了一切:

插件 'C:/Qt/5.1.1/mingw48_32/plugins/sqldrivers/qsqlpsql.dll' 使用不兼容的 Qt 库。(不能混合调试和发布库。)"

我想您的程序是在调试模式下编译的,但是您缺少在调试模式下编译的 Qt 插件。这是怎么发生的,既然你说你用的是现成的包......不知道。

尝试在发布模式下编译您的程序。在 .pro 中:CONFIG+=release.

于 2013-09-08T13:31:14.443 回答
0

尝试重新编译 PostgreSQl dll

于 2013-11-06T16:48:15.100 回答