我使用-plugin-sql-mysql -plugin-sql-sqlite标记构建了qt。我有libqsqlmysql.a和libqsqlite.a。我在我的项目中使用qt。但我的构建系统不是qt,我使用waf。
当我尝试运行与mysql数据库建立连接的应用程序时,我遇到以下问题:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers:
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
INFO - Failed to connect to root mysql admin
我在构建应用程序时将-lqsqlmysql添加到编译器选项中。
你能解释一下qt驱动程序是如何工作的,它是如何以及何时尝试加载驱动程序的。什么是qt驱动程序(dll,lib,....)?
答案 0 :(得分:3)
我认为您的应用正在尝试从DLL动态加载数据库插件。 This document将帮助您找到数据库驱动程序DLL的适当位置。或者,您可以静态地将您的应用与插件相关联,here's how。
答案 1 :(得分:2)
Qt有几种类型数据库的插件,这些插件位于以下位置:
$(QTDIR)/plugins/sqldrivers
首先检查那里是否存在mysql插件。如果没有插件那么这意味着你没有正确编译Qt,所以你应该使用启用的MySql插件重新编译Qt。否则,您的应用程序可能无法正确加载mysql插件。 Qt插件在应用程序初始化期间动态加载,即初始化QSqlDatabase对象时。如果未正确设置插件位置,则不会加载任何插件。您可以通过以下Qt API检查应用程序期望找到插件的位置:
QStringList QCoreApplication::libraryPaths ()
如果应用程序未指向正确的位置,您可以通过调用:
来设置插件路径void QCoreApplication::addLibraryPath ( const QString & path )
或者通过在放置可执行文件的文件夹中创建qt.conf文件。在此文件中,您可以通过以下方式配置插件位置:
[Paths]
Plugins = %pluginlocation%