2011-11-23 83 views
1

我在这里有以下奇怪的情况我需要一些帮助:Qt Sql驱动程序问题

我正在构建一个Qt应用程序与MySQL访问。为此我有: - 一个专用的构建机器,使用Qt 2010.05和MySQL 5.1仅用于库,Windows 7 32位。该机器创建安装包。 - 一个专用的开发机器,CentOS 5.5 - 两台测试机器: - - 一个“永远”全新安装的Windows 7 - - 另一台Windows 7机器上也有一个新的Qt,用于其他东西。

我已经在今年2月的某个时候(在bilding机器上)构建了以前版本的应用程序,它工作得很好,完美,加载了MySQL驱动程序(我已将它放在sqldrivers目录中,如其他人所示) 。安装包安装,无处不在(至少在我所有的Windows机器上)。

现在,我已经在同一台机器上构建了另一个应用程序版本。在安装包中唯一重要的区别是可执行文件(和一些HTML文件,但这些文件不相关)。其他一切都是一样的。当我在构建机器上运行NEW可执行文件时,我得到(QSQLITE,QMYSQL3,QMYSQL,QODBC3,QODBC)作为QSqlDatabase :: drivers()输出。如果我在任何其他机器上运行NEW exectuable,我会得到一个空的驱动程序列表。如果我运行它适用于任何机器上的老包...

由两个processess已加载模块(旧可执行文件,新的可执行文件)基本相同,不同之处是其获取旧的加载和qtmysql DLL不在新的。

你有没有遇到过这样的情况?如果是,你是否有一个可行的解决方案?

谢谢, f。

回答

2

Qt只会加载与所使用的程序或Qt版本兼容的插件。请参阅Deploying Plugins文档。

您也可以尝试使用QPluginLoader手动加载插件,并检查在QPluginLoader::errorString未加载时报告的内容(如果无法修复,请将错误消息添加到您的问题中)。

+0

我试过了:无法加载,错误字符串为“未知错误”:( – fritzone

+1

如果未设置其他错误消息,则返回“未知错误”,是否调用了'QPluginLoader :: load'并得到了'false ?' –

+0

没有,我已经得到了真正的,这里是代码:;(!Loader.load方法())\t QPluginLoader装载机(的QApplication :: applicationDirPath()+ “/sqldrivers/qsqlmysql4.dll”) \t如果 { QMessageBox提示::至关重要(此时间tr( “错误”),loader.errorString(),QMessageBox提示:: OK);} \t其他 \t { QMessageBox提示::至关重要(此时间tr( “没有错误”) ,loader.errorString(),QMessageBox :: O K); \t}然后我得到“没有错误”,但是当我尝试做真正的工作时,我仍然得到“驱动程序未加载”...... – fritzone