Qt 应用程序在任务计划程序启动时不加载 sql 个驱动程序

Qt App doesn't load sql drivers when started by task scheduler

我在 exe 附近的同一目录(也是 sqldrivers 文件夹)中编写了一个小应用程序和所有与 Qt 相关的 dll。

问题:应用程序在我手动启动时工作,但当它由 windows 的任务计划程序启动时出现 "QSqlDatabase: driver not loaded, QSqlDatabase: available drivers: QSQLITE QMYSQL ... blah blah" 错误。

有什么想法吗?

确保 Qt SQL 驱动程序插件所依赖的库(例如 libmysql.dll)也在 PATH 中。

否则 Qt 无法 dlopen 任何 Qt 插件 b/c 不满足依赖关系。

PS: 使用 Dependency Walker (http://www.dependencywalker.com/)

检查 sqldrivers/ 中插件的附加依赖关系

将路径添加到 Path 环境变量后,意识到如果我在命令提示符下的任何其他目录中调用 myapp.exe 它不会加载驱动程序,但是如果我将命令提示符目录更改为 exe 的路径它有效。

所以我找到了一个替代解决方案,即创建以下 bat 文件,我使用调度程序调用它并且它有效。

@echo off
d:
cd MyAppPath
start "" "D:\MyAppPath\MyApp.exe"
exit

顺便说一句,不要忘记将路径添加到 ["Path"] 环境,例如“....;D:\MyAppPath”

感谢回复。