Название: создание расширения для собственныз приложений Отправлено: 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??? Название: Re: создание расширения для собственныз приложений Отправлено: pastor от Октябрь 28, 2009, 17:39 Объяви явно конструкторы
Название: Re: создание расширения для собственныз приложений Отправлено: nono от Октябрь 29, 2009, 10:04 Цитировать Объяви явно конструкторы Объявил в файле MyPlugin.h конструктор: MyPlugin(QObject *pobj = 0); а в файле MyPlugin.cpp реализацию: MyPlugin::MyPlugin(QObject *pobj): QObject(pobj) {} Таже ошибка. Мне кажется что-то с макросом связвнно Название: Re: создание расширения для собственныз приложений Отправлено: pastor от Октябрь 29, 2009, 14:34 Покажи полный лог сборки
Кстате, а где у тебя опеределен деструктор StringInterface? (хоть он и чисто виртуальный, но в случае деструктора он должен иметь тело) Название: Re: создание расширения для собственныз приложений Отправлено: nono от Октябрь 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 - е............. я ещё думаю может с компилятором что-то ни то..... пожалуйста кто может сделайте у себя какую-нибудь простенькую программу с использованием плагинов..... и напишите какой-нибудь простенький плагин..... только чтоб у вас всё это компилировалось нормально....и выложите мне код.....я у себя откомпилирую....может риально компилятор моросит Название: Re: создание расширения для собственныз приложений Отправлено: pastor от Октябрь 29, 2009, 18:52 Выложи лучше свой проект плагина сюда
Название: Re: создание расширения для собственныз приложений Отправлено: nono от Октябрь 30, 2009, 09:49 Ok!
Но у меня не совсем проект.... а так пару попыток создать плагин... выложу одну из них... если кому не влом попробуйте у себя создть плагин из этих исходников..... и если не получится исправить по возможности ошибки...... а потом напишите чё получилось и как............заранее спасибо Название: Re: создание расширения для собственныз приложений Отправлено: pastor от Октябрь 30, 2009, 12:47 Подправил
Название: Re: создание расширения для собственныз приложений Отправлено: nono от Октябрь 30, 2009, 13:01 :o ЗАРАБОТАЛО !!!!!
pastor, спасибо огромное, а то я уже неделю мучаюсь.....честно говоря я про класс QtPlugin вообще не знал...... То ли я невнимательно читал то ли М. Шлее чёто упустил...... ну теперь спасть спокойно буду |