如何部署使用ODBC插件的QT应用程序(没有静态链接)?

时间:2011-10-30 16:26:06

标签: qt plugins deployment odbc

我的应用程序以这种方式使用Qt SQL

QString servername = "SQL09.FreeMySQL.net";
QString dbname = "psiprobation";
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setConnectOptions();
QString dsn = QString("DRIVER={MySQL ODBC 5.1 Driver};SERVER=%1;DATABASE=%2;USER=jnchappell21;PASSWORD=XXXXXXX").arg(servername).arg(dbname);
db.setDatabaseName(dsn);

我也把它包含在我的代码中......

a.addLibraryPath(a.applicationDirPath()+"/plugins");

“plugins”文件夹包含另一个文件夹“sqldrivers”。 “sqldrivers”里面是myodbc5.dll,myobdc5S.dll,qsqlodbc4.dll和qsqlodbcd4.dll。 (注意:“plugins”文件夹与可执行文件位于同一目录中)

现在部署阶段已经到来,应用程序在安装Qt的系统上运行良好;但是,在其他系统(未安装QT)上,即使应用程序将运行(即GUI打开并显示错误消息),我也无法连接到数据库。

错误消息是:“[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序QODBC3:无法连接”

这个问题的解决方案是什么?

1 个答案:

答案 0 :(得分:1)

调试Qt中的插件问题可能很痛苦。尝试使用addLibraryPath()强制插件位置,我从未取得太大成功。在我弄清楚原因之前,我发现Qt应用程序将在应用程序根目录中查找所涉及的插件类型的“leaf”目录。在您的情况下,只需将sqldrivers目录放在应用程序的根目录中(不将其嵌套在plugins目录中)。

尝试确定您是否确实存在插件位置问题的一种方法是,尝试将驱动程序文件移出开发计算机上的位置(或重命名)并查看是否出现相同的错误。

虽然针对小部件插件,但此页面提供了一些plugin trouble shooting提示。