QtService无法启动
QtService could not start
我对QtService
类有问题。我正在尝试构建Windows服务。我下载了这些文件,并将它们包含在我的项目中。
现在,当我(在QtCreator中)运行该项目时,我收到消息
服务MyService无法启动。
不执行方法start()
。
我在QtServiceBase::exec()
实现结束时的qtservice.cpp文件中找到了上层消息。
你知道我为什么收到这个消息吗?
myservice.h:
#ifndef MYSERVICE_H
#define MYSERVICE_H
#include <QtService/qtservice.h>
#include <QCoreApplication>
#include <QDebug>
#include <QObject>
class MyService : public QtService<QCoreApplication>
{
public:
MyService(int argc, char **argv);
~MyService();
void start();
void pause();
void resume();
void stop();
private:
};
#endif // MYSERVICE_H
myservice.cpp:
#include "myservice.h"
MyService::MyService(int argc, char **argv) : QtService<QCoreApplication>(argc, argv, "MyService")
{
qDebug() << "CONSTRUCTOR";
setServiceDescription("This is my service. ");
setServiceFlags(QtServiceBase::CanBeSuspended);
qDebug() << "CONSTRUCTOR 1";
}
MyService::~MyService()
{
qDebug() << "DECONSTRUCTOR";
try {
} catch (...) {
qCritical() << "An unknown error occured in deconstructor";
}
}
void MyService::start()
{
qDebug() << "START";
try {
QCoreApplication *app = application();
qDebug() << "Service started";
qDebug() << app->applicationDirPath();
} catch (...) {
qCritical() << "An unknown error occured in start";
}
}
void MyService::pause()
{
qDebug() << "PAUSE";
try {
qDebug() << "Service paused";
} catch (...) {
qCritical() << "An unknown error occured in pause";
}
}
void MyService::resume()
{
qDebug() << "RESUME";
try {
qDebug() << "Service resumed";
} catch (...) {
qCritical() << "An unknown error occured in resume";
}
}
void MyService::stop()
{
qDebug() << "STOP";
try {
qDebug() << "Service stopped";
} catch (...) {
qCritical() << "An unknown error occured in stop";
}
}
main.cpp:
#include "myservice.h"
#include <QCoreApplication>
int main(int argc, char *argv[])
{
MyService service(argc, argv);
return service.exec();
}
和.pro
文件:
QT += core gui network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = ServiceTest
TEMPLATE = app
SOURCES += main.cpp
myservice.cpp
HEADERS += myservice.h
include(QtService/qtservice.pri)
是否已将参数-exec
传递给服务?(单击"项目",然后单击"运行设置",然后填写"参数"字段)。
服务想要作为服务运行,除非您传递-exec
参数,该参数告诉它作为应用程序运行(这样您就可以调试它)。
其他命令行参数包括-install
、-uninstall
、-pause
等。使用-install
安装服务后,可以使用Windows管理工具运行该服务。
相关文章:
- 如何创建一个空的全局类并在启动时实例化它
- 即使我读取了所有内容,在FIFO上打开的QSocketNotifier也会一直启动
- 使用 std::string () const 函数启动线程或未来
- 如何修复valgrind启动时的致命错误(与libc6-dbg和libc6-dbg:i386连接)
- 将向量作为类>(值)<向量启动和向量<类>[值]有什么区别
- 如何创建线程序列以按照启动顺序执行任务?
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- 在挂钩启动新线程时解除挂钩进程
- 程序无法启动,因为缺少 libmpc-3.dll
- 从 exe 文件 (Visual Studio ) 启动时调试断言失败
- QSerialPort 在应用程序启动之前正在使用中
- 无法在 Arch Linux 中启动虚幻引擎 4
- C++关于指针和使用函数将它们启动到堆的行为究竟是什么?
- 如何使用 ctypes 停止和重新启动从 Python 运行的C++代码
- 程序在使用 system() 启动另一个可执行文件时停止
- Qt 和 Android - 如何使用 Qandroidjniobject 启动相机
- Q没有管理权限的 exe 无法启动维护工具
- 启动类函数作为失去引用的线程
- 如何使用C++确定应用程序是否已在窗口中启动?
- QtService无法启动