我编译环境是vs2008+qt4.6.2,自己编译了mysql的驱动,在vs2008下面可以运行,把可执行文件拷出来加上库文件也是可以运行的,但是我把程序拿到其它电脑就报错,提示driver not loaded
我现在的配置是:
在.pro文件中加入QTPLUGIN += qsqlmysql编译,将mysql的dll放到可执行文件的 sqldrivers目录下面,然后
又 addLibraryPath()进来了(网上看到的方法),但是还是不行,我用下面的语句打印 QApplication::addLibraryPath("C://plugins");
QPluginLoader sqlPlugin("qsqlmysqld4.dll"); if(!sqlPlugin.load())
QMessageBox::information(NULL,"error",sqlPlugin.errorString(),QMessageBox::Ok); 我在C:/plugins和C:\plugins\sqldrivers目录下面都加了qsqlmysqld4.dll,但是还是提示“the share library was not found”,只有当我在可执行文件目录下面直接放qsqlmysqld4.dll才会提示“unknown error”,但是如果不在可执行目录下面放置sqldrivers/qsqlmysqld4.dll,还是会提示“driver not loaded” 现在我很疑惑,为啥addLibraryPath()了还是一点用处也没有,在自己电脑上只要在可执行文件目录下面再建个sqldrivers文件夹放入qsqlmysqld4.dll就可以连接正常(这里我将其它地方的qsqlmysqld4.dll都删除了,所以应该确定就是这个地方的dll文件被载入了),但是我把这个程序拿到其它电脑上去却会报错driver not loaded 下面截图是我的程序目录,qsqlmysqld4.dll在sqldrivers目录下面,这个我在自己电脑上可以运行。
我把这个程序移植到其它电脑就是不行,其它电脑上我也装了mysql,为了发现原因还装了qt,结果还是不行, 我在windows 7下写的程序,mysql的驱动也是windows7下编译的,发布的电脑室xp,不知道这个有没有关系 请论坛上的兄弟姐妹帮忙看看可能哪里出问题了。 写的有点乱,希望大家可以看懂,给小弟一点建议,不甚感激! 解决:搜索了到论坛中的这个帖子:
http://www.qtcn.org/bbs/read.php?tid=19742&keyword=driver%20not%20loaded 解决的方法是:
1.在打开数据库之前,添加 qApp->addLibraryPath(qApp->applicationDirPath () + "/plugins");
2.在执行文件exe所在的文件夹中,创建\plugins\sqldrivers,然后将qsqlmysql4.dll libmysql.dll放入\plugins\sqldrivers
上面方法我在另一太电脑上还是不行,后来发现只要安装vcredist_x86.exe这个程序就不会出现找不到插件的情况了,问题也解决了
[ 此帖被szh1987在2010-03-25 16:22重新编辑 ]