Qt App在由任务调度程序启动时不会加载sql驱动程序

时间:2016-01-05 12:30:32

标签: c++ qt scheduled-tasks

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

问题:应用程序在我手动启动时工作,但是当它由Windows的任务调度程序启动时提供" QSqlDatabase:驱动程序未加载,QSqlDatabase:可用驱动程序:QSQLITE QMYSQL ... blah blah"错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

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

PS:使用Dependency Walker(http://www.dependencywalker.com/)检查sqldrivers/中插件的其他依赖关系

答案 1 :(得分:0)

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

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

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

BTW不要忘记添加路径["路径"]环境,如" ....; D:\ MyAppPath"

感谢您的回复。