Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: wyvern от Март 20, 2009, 11:07



Название: Не получается использовать QtService
Отправлено: wyvern от Март 20, 2009, 11:07
привет!

я работаю с QT 4.4.3 и msvs2005

пытаюсь написать сервис. скачал для этого qtservice-2.5-commercial и пытаюсь его использовать следующим образом

папка src содержит следующие файлы:

QtService
QtServiceBase
QtServiceController
qtservice.pri
qtservice.cpp
qtservice.h
qtservice_p.h
qtservice_unix.cpp
qtservice_win.cpp
qtunixserversocket.cpp
qtunixserversocket.h
qtunixsocket.cpp
qtunixsocket.h

я решил разместить их в %QTDIR% по аналогии с имеющимися там файлами, т.е.:

1) создал в %QTDIR%\src папку qtservice
2) скопировал в %QTDIR%\src\qtservice файлы:

qtservice.pri
qtservice.cpp
qtservice.h
qtservice_p.h
qtservice_unix.cpp
qtservice_win.cpp
qtunixserversocket.cpp
qtunixserversocket.h
qtunixsocket.cpp
qtunixsocket.h

3) скопировал в %QTDIR%\include\QtCore файлы:

QtService
QtServiceBase
QtServiceController

4) создал в %QTDIR%\include\QtCore файл qtservice.h, содержащий текст:

#include "../../src/qtservice/qtservice.h"

создал тестовый проект:

service.h

Код
C++ (Qt)
#ifndef SERVICE_H
#define SERVICE_H
 
#include <QtService>
 
class service : public QtService<QCoreApplication>
{
public:
service (int argc, char **argv);
protected:
void start();
void pause();
void resume();
};
 
#endif // SERVICE_H

service.cpp

Код
C++ (Qt)
#include "service.h"
 
service ::service (int argc, char **argv)
: QtService<QCoreApplication>(argc, argv, "Service")
{
}
 
void service ::start()
{
}
 
void service ::pause()
{
}
 
void service ::resume()
{
}

main.cpp

Код
C++ (Qt)
#include "service.h"
 
int main(int argc, char *argv[])
{
service s(argc, argv);
 
return s.exec();
}

при линковке проекта вылезает куча ошибок LNK2019 и LNK2001

возможно, недостает библиотеки для qtservice или чего-то еще


Название: Re: Не получается использовать QtService
Отправлено: lit-uriy от Март 20, 2009, 18:19
я ничего никуда не копировал, собрал пример из комплекта и все работает, dll'ки там не создаются, это небольшие файлы, которые просто прицепляются к твоему приложению.


Название: Re: Не получается использовать QtService
Отправлено: wyvern от Март 27, 2009, 17:33
спасибо

включил все *.h и *.c файлы из поставки в состав проекта, и все заработало

проблема решена


Название: Re: Не получается использовать QtService
Отправлено: bigory от Ноябрь 03, 2010, 18:08
Поделитесь же, тоже вот скачал и мучаюсь. Куда и че пихать та?


Название: Re: Не получается использовать QtService
Отправлено: lit-uriy от Ноябрь 03, 2010, 21:15
bigory, примеры компилировал? разбирался с ними?


Название: Re: Не получается использовать QtService
Отправлено: bigory от Ноябрь 03, 2010, 22:28
Примеры в папке qtservice-2.6\... компиляться, а вот если применять эти библиотеки там, где все остальные примеры, то жалуется на отсутствия описаний. Примеры разобрать пробовал, ничего не понял


Название: Re: Не получается использовать QtService
Отправлено: lit-uriy от Ноябрь 04, 2010, 08:24
Примеры в папке qtservice-2.6\... компиляться, а вот если применять эти библиотеки там, где все остальные примеры, то жалуется на отсутствия описаний.
Ничего не понял, какие "все остальные"?
Все примеры этого решения лежат в каталоге examples, ни каких других примеров нет.


Название: Re: Не получается использовать QtService
Отправлено: bigory от Ноябрь 04, 2010, 11:55
Если скачать и установить Qt Creator, в каталоге установленного будет папка с примерами. Мне понадобилось еще скачать qtservice-2.6, там тоже есть некоторые примеры для работы с qtservice. Вот откуда тут 2 папки examples.
Так вот в каталоге qtservice-2.6\examples примеры компиляться если использовать qtservice, а вот в каталоге установленного Qt Creator(а) в папке examples, если применить библиотеки qtservice, то не компиляться.
Я не знаю как еще подробнее это описать


Название: Re: Не получается использовать QtService
Отправлено: lit-uriy от Ноябрь 04, 2010, 21:15
>>Если скачать и установить Qt Creator
причём здесь креатор?
Если мы говорим о конкретной библиотеки, то о ней и говорим.
Давайте всё-таки разделять - мухи отдельно, котлеты отдельно.

>>Так вот в каталоге qtservice-2.6\examples примеры компиляться если использовать qtservice
что значит "если использовать qtservice"?
Данные примеры предназначены для демонстрации возможностей данной библиотеки (qtservice). Их и нужно модифицировать под свои нужды, с ними и нужно разобраться, изучить их pro-файл, исходники.


Название: Re: Не получается использовать QtService
Отправлено: QuAzI от Декабрь 09, 2010, 17:57
Взял например qtservice-2.6_1-opensource\examples\interactive
В его директории всё компилируется. Создаю пустой проект, кидаю туда main.cpp от примера и вуаля - нифига не компилируется. До тех пор пока *.pro файл не подкину родной.

В итоге сейчас у меня пустое приложение с классом сервиса компилится с таким pro-файлом
Код:
TEMPLATE = app
CONFIG += console qt

SOURCES = main.cpp

include(d:\Qt\2010.05\qt\include\QtService\qtservice.pri)
Библиотеку подключаю
#include "d:\Qt\2010.05\qt\include\QtService\qtservice.h"
Где include\QtService содержит всё из qtservice-2.6_1-opensource\src, а common.pri лежит прямо в include\.

Я думал что дело в include(d:\Qt\2010.05\qt\include\QtService\qtservice.pri) в PRO-файле, но пробовал его дописывать в тот PRO что создавался при старте нового проекта - не помогает. А дальше было лень щемить, к чему он так трепетно относится, подкинул pro из нормально собирающегося проекта и буду дальше на него лепить что надо.