【发布时间】:2017-07-13 13:27:35
【问题描述】:
互联网上有大量关于驱动程序加载失败的查询,但我的情况看起来很独特。请帮忙。
我创建了我的代码的 dll,它使用 QSqlDatabase。所以依赖就像 mylib.dll->qt5sql.dll->qsqlpsql.dll 当我使用 mylib.dll 运行测试应用程序时,它无法加载驱动程序。它列出了可用的驱动程序,如下所示: QSqlDatabase:可用驱动程序:QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
但是,当我尝试将我的代码用作静态库时,它工作得非常好。所以对 libpq.dll 的依赖,PATH 等的值都可以。有没有其他人遇到过这样的问题?
【问题讨论】:
-
这三个 dll 是否与文本应用程序可执行文件位于同一文件夹中?
-
这方面我尝试了多种组合。 1.将exe和所有dll(包括qt5core和qt5sql)复制到同一个文件夹中。 2.exe和plugins/sqldrivers/driverdlls 3.exe和sqldrivers/driverdlls 4.qt的默认安装。我也使用过 QCoreApplication::addLibraryPath("./plugins");但它只能在我的代码的 dll 之外工作。它没有任何效果。甚至为此尝试了 setLibraryPath()。
-
您可以尝试另一件事: 1. 将驱动程序放入可执行文件附近的
sqldrivers文件夹 2. 通过QCoreApplication::addLibraryPath将sqldrivers文件夹添加到库路径。 3.在代码中使用之前尝试手动加载驱动:QPluginLoader loader("sqldrivers/qsqlpsql.dll"); loader.load(); -
谢谢德米特里。正如您在我的分析器中看到的那样,我的问题是另外一回事。但是,您的提示有时会对其他人有所帮助。