Qt数据库驱动程序

时间:2012-11-09 20:48:47

标签: c++ sql qt driver

我使用-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,....)?

2 个答案:

答案 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%