我已经成功地编译了MySQL驱动程序,但我不能强迫Qt加载它们。
在开始时应该说的是,在安装了Qt之后,使用了ODBC和SQLite驱动程序,它们也没有被检测到。
在*C:\Qt\4.8.0\plugins\got驱动程序* Iv中:
qsqlite4.dll qsqlite4.lib qsqlited4.dll qsqlited4.lib qsqlmysql4.dll qsqlmysql4.lib qsqlmysqld4.dll qsqlmysqld4.lib qsqlodbc4.dll qsqlodbc4.lib qsqlodbcd4.dll qsqlodbcd4.lib qsqlpsql4.dll qsqlpsql4.lib qsqlpsqld4.dll qsqlpsqld4.lib
我还输入了qsqlmysql*.*文件:
C:\Qt\4.8.0\bin 应用\ 应用程序调试\ 应用程序释放 应用程序\sqldrivers驱动程序\
当然Iv也使QtSql*.dll也就位了。
Iv获得了正确配置的.pro:
QT +=核心gui网络sql
我正在运行这个代码:
#include <QSqlRecord>
#include <QSqlError>
QLibrary mysqllib("qsqlmysqld4.dll");
mysqllib.load();
auto t1 = mysqllib.isLoaded();
qDebug()<<"my library loaded"<<mysqllib.isLoaded();
QPluginLoader plug("qsqlmysqld4.dll");
plug.load();
auto t2 = plug.isLoaded();
qDebug()<<"mysql plugin is loaded"<<plug.isLoaded();
ui->textEditContent->append( "--SQL DRIVERS SUPPORTED:--\n" );
FOREACH( auto driver, QSqlDatabase::drivers() )
ui->textEditContent->append( " " + driver + "\n" );QLibrary和QPluginLoader返回true。而QSqlDatabase::drivers()是空的。我做错什么了?Qt看不到C:\Qt\4.8.0\plugins\ the驱动程序中的任何驱动程序。Iv编译了具有相同编译器(MSVC2010)的Qt和SQL驱动程序,没有错误。我已经运行了几个月的代码。任务是添加MySQL支持。
发布于 2013-01-17 09:59:50
问题解决了!我修改了代码,现在看起来如下:
#include <QSqlRecord>
#include <QSqlError>
QStringList liblist;
liblist.push_back("c:/Qt/4.8.0/plugins/");
liblist.push_back("c:/Qt/4.8.0/bin/");
QCoreApplication::setLibraryPaths(liblist);
QLibrary mysqllib("qsqlmysqld4.dll");
mysqllib.load();
auto t1 = mysqllib.isLoaded();
qDebug()<<"my library loaded"<<mysqllib.isLoaded();
QPluginLoader plug("qsqlmysqld4.dll");
plug.load();
auto t2 = plug.isLoaded();
qDebug()<<"mysql plugin is loaded"<<plug.isLoaded();
ui->textEditContent->append( "--SQL DRIVERS SUPPORTED:--\n" );
FOREACH( auto driver, QSqlDatabase::drivers() )
ui->textEditContent->append( " " + driver + "\n" );看起来,即使Qt有自己的文件夹的路径,也需要在加载驱动程序之前指定它们。您可以通过添加以下行来做到这一点:
QStringList liblist;
liblist.push_back("c:/Qt/4.8.0/plugins/");
liblist.push_back("c:/Qt/4.8.0/bin/");
QCoreApplication::setLibraryPaths(liblist);如果您想要像我一样将这些驱动程序包含到应用程序文件夹中,您可以在应用程序的根目录中创建文件夹“sqldrivers”,并将路径添加到此根目录中。所以我们有libmysql.dll和qsqlmysql.dll在:
X:\APPLICATION\sqldrivers\
代码如下所示:
QStringList liblist;
liblist.push_back(QDir::currentPath()); // Qt always looks for those drivers in <LIB_FOLDER_SPECIFIED>/sqldrivers/
//liblist.push_back("e:/Qt/4.8.0/bin/");
//liblist.push_back("e:/Qt/4.8.0/plugins/");
QCoreApplication::setLibraryPaths(liblist);发布于 2013-01-16 16:50:19
另外,您还需要在
C:\Qt\4.8.0\bin
APPLICATION\
APPLICATION\Debug\
APPLICATION\Release\https://stackoverflow.com/questions/14362881
复制相似问题