gpt4 book ai didi

c++ - QtService 无法启动

转载 作者:太空狗 更新时间:2023-10-29 23:50:04 26 4
gpt4 key购买 nike

QtService 类有问题。我正在尝试构建一个 Windows 服务。我下载了 files并将它们包含到我的项目中。

现在,当我运行项目(在 QtCreator 中)时,我收到消息

The service MyService could not start.

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

我的服务.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";
}
}

ma​​in.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等。使用安装服务后-安装 然后您可以使用 Windows 管理工具运行它。

关于c++ - QtService 无法启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34017268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com