使用Skycoder42/QtService编写守护进程部署后找不到standard后端如何解决
问题原因解释
报错中提到的backend是Skycoder42/QtService封装的平台适配后端插件:QtService将不同操作系统的服务管理逻辑(Linux systemd、Windows服务控制管理器、macOS launchd、前台调试用的standard后端等)都拆成了独立插件,运行时会根据启动场景自动加载对应插件。
你在QtCreator中本地运行时,默认调用的是用于前台调试的standard后端,本地编译环境中已经包含对应插件文件所以运行正常;部署到服务器时漏打包了QtService的后端插件,就会触发找不到backend的报错。
修复及正确部署启动步骤
- 第一步先补齐后端插件:在本地Qt安装目录的对应编译套件路径下,找到
QtService/plugins/servicebackends文件夹,将整个文件夹复制到部署程序的同级plugins目录下,确保部署目录结构为:程序根目录/ ├─ 你的可执行程序 └─ plugins/ └─ servicebackends/ ├─ libqtservice_backend_systemd.so(Linux环境) ├─ libqtservice_backend_standard.so(调试用通用后端) └─ 其他对应平台的后端文件 - 如果你只是需要在服务器前台临时测试运行,确认插件放对后,执行以下命令即可正常启动:
./你的可执行程序名 -e - 如果你需要正式注册为系统后台服务运行,不需要调用standard后端,按对应操作系统操作即可:
- Linux(systemd环境):使用root权限执行
./你的可执行程序名 -i完成服务注册,再执行systemctl start 你的服务名即可启动服务,运行时会自动加载systemd后端 - Windows:使用管理员权限打开cmd,执行
你的可执行程序名.exe -i完成服务注册,在系统服务管理器中找到对应服务启动即可,运行时会自动加载Windows服务后端
- Linux(systemd环境):使用root权限执行
如果插件路径配置正确仍报找不到后端的错误,可以在启动时加参数指定Qt插件根目录:
./你的可执行程序名 -platformpluginpath /你/的/程序/根目录/plugins
内容的提问来源于stack exchange,提问作者aidinMC
相关产品推荐
相关产品推荐

