Russian Qt Forum
Октябрь 01, 2024, 07:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: создание расширения для собственныз приложений  (Прочитано 6262 раз)
nono
Гость
« : Октябрь 28, 2009, 17:30 »

роблема в создании расширения для своих приложений в QT.
Открыл книжку М. Шлея "Qt4 Профессиональное программирование на С++"
вот привиду немного сокращённый (на пару функций) пример с этой книги

test.pro
Цитировать
TEMPLATE = lib
CONFIG += plugin
QT -= gui
HEADERS += myinterface.h \
    MyPlugin.h
SOURCES += MyPlugin.cpp
TARGET = plugin

myinterface.h
Цитировать
#ifndef MYINTERFACE_H
#define MYINTERFACE_H
class QStringList;
class StringInterface
{
    public:
        virtual ~StringInterface() = 0;
        virtual QStringList operations() const = 0;
};
Q_DECLARE_INTERFACE(StringInterface, "com.mysoft.Application.StringInterface/1.0")
#endif // MYINTERFACE_H

MyPlugin.h
Цитировать
#ifndef MYPLUGIN_H
#define MYPLUGIN_H
#include <QObject>
#include "myinterface.h"
class MyPlugin: public QObject, public StringInterface
{
    Q_OBJECT
    Q_INTERFACES(StringInterface)
    public:
            virtual ~MyPlugin();
            virtual QStringList operations() const;
};
#endif // MYPLUGIN_H

MyPlugin.cpp
Цитировать
#include "MyPlugin.h"
#include <QStringList>
QStringList MyPlugin::operations() const
{
    return QStringList() << "oddUpper" << "lower";
}
Q_EXPORT_PLUGIN2(StringInterface, MyPlugin)

Выдаёт вот такую ошибку:
D:/programming/test/MyPlugin.cpp:8: error: expected constructor, destructor, or type conversion at end of input

как я понял чё-то с этим макросом Q_EXPORT_PLUGIN2(...)

в книги его параметрами указываются (StringInterface, MyPlugin),
а я уже пробовал указывать и (plugin, MyPlugin) (имя плагина, имя класса)
и несколько других вариантов..... и всё равно эта ошибка

Как правильно нужно создавать расширения в Qt???
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Октябрь 28, 2009, 17:39 »

Объяви явно конструкторы
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
nono
Гость
« Ответ #2 : Октябрь 29, 2009, 10:04 »

Цитировать
Объяви явно конструкторы

Объявил в файле MyPlugin.h конструктор:

MyPlugin(QObject *pobj = 0);

а в файле MyPlugin.cpp реализацию:

MyPlugin::MyPlugin(QObject *pobj): QObject(pobj)
{}

Таже ошибка. Мне кажется что-то с макросом связвнно
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #3 : Октябрь 29, 2009, 14:34 »

Покажи полный лог сборки


Кстате, а где у тебя опеределен деструктор StringInterface? (хоть он и чисто виртуальный, но в случае деструктора он должен иметь тело)
« Последнее редактирование: Октябрь 29, 2009, 14:42 от pastor » Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
nono
Гость
« Ответ #4 : Октябрь 29, 2009, 17:36 »

Цитировать
Выполняется сборка проекта MyPlugin...
Настройки не изменились, этап QMake пропускается.
Запускается: C:/Qt/2009.03/mingw/bin/mingw32-make.exe -w
mingw32-make: Entering directory `D:/programming/MyPlugin'
C:/Qt/2009.03/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `D:/programming/MyPlugin'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_PLUGIN -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"c:\Qt\2009.03\qt\include\QtCore" -I"c:\Qt\2009.03\qt\include" -I"c:\Qt\2009.03\qt\include\ActiveQt" -I"debug" -I"c:\Qt\2009.03\qt\mkspecs\win32-g++" -o debug\MyPlugin.o MyPlugin.cpp
MyPlugin.cpp:9: error: expected constructor, destructor, or type conversion before '(' token
mingw32-make[1]: Leaving directory `D:/programming/MyPlugin'
mingw32-make: Leaving directory `D:/programming/MyPlugin'
mingw32-make[1]: *** [debug/MyPlugin.o] Error 1
mingw32-make: *** [debug] Error 2
Завершено с кодом возврата 2.
Ошибка во время сборки проекта MyPlugin
Во время выполнения сборки на этапе 'Make'

вот полностью всё то, что выводит компилятор.... насчёт тела деструктора и даже тела конструктора и всего прочева....всё делал.... ничего не помогает....
я уже пробовал компилировать даже на xp на viste хочу попробовать на debian - е.............
я ещё думаю может с компилятором что-то ни то.....
пожалуйста кто может сделайте у себя какую-нибудь простенькую программу с использованием плагинов..... и напишите какой-нибудь простенький плагин..... только чтоб у вас всё это компилировалось нормально....и выложите мне код.....я у себя откомпилирую....может риально компилятор моросит
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Октябрь 29, 2009, 18:52 »

Выложи лучше свой проект плагина сюда
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
nono
Гость
« Ответ #6 : Октябрь 30, 2009, 09:49 »

Ok!
Но у меня не совсем проект.... а так пару попыток создать плагин... выложу одну из них...
если кому не влом попробуйте у себя создть плагин из этих исходников..... и если не получится исправить по возможности ошибки...... а потом напишите чё получилось и как............заранее спасибо
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #7 : Октябрь 30, 2009, 12:47 »

Подправил
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
nono
Гость
« Ответ #8 : Октябрь 30, 2009, 13:01 »

 Шокированный ЗАРАБОТАЛО !!!!!
 pastor, спасибо огромное, а то я уже неделю мучаюсь.....честно говоря я про класс QtPlugin вообще не знал...... То ли я невнимательно читал то ли М. Шлее чёто упустил...... ну теперь спасть спокойно буду
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.133 секунд. Запросов: 22.