C++ (Qt)typedef void * CreateFormT(const char *, const char *, void **, void *, void *);CreateFormT *TFCreateForm; //функция загрузки формы QLibrary formLib("form.dll");TFCreateForm = (CreateFormT *) formLib.resolve("_CreateForm");void *wid = TFCreateForm("Form.xml", ".data.xml", &m_form, NULL, NULL); QWidget *widget_ = (QWidget *)wid; //вот здесь я получил QWidget
QThread* createObject(QObject* parent) const { return new MyThread(parent); }
//либа .hclass MyClass : public QThread{ Q_OBJECTpublic: MyClass ();private : void setOpenFileName();};//это ф-ция которая создает новый классMyClass MyFunc = new MyClass ; //и эту функцию нужно экспортировать из библиотеки????
IMPORT_EXPORT void * _CreateThread(/* параметры*/);
C++ (Qt)void * _CreateThread(/* параметры*/){ MyClass * cl = new MyClass(); return cl;}
//либа .hclass MyClass : public QThread{ Q_OBJECTpublic: MyClass ();private : void setOpenFileName();};MyClass MyFunc = new MyClass; // неправильно//это ф-ция которая создает новый классQThread* createObject(QObject* parent) const // правильно{ return new MyClass(parent); }
class QObject;class QThread;QThread* createObject(QObject* parent) const;
#ifndef INTERFACES_H#define INTERFACES_Hclass MyModuleInterface{public: virtual ~MyModuleInterface() {} virtual void* MyModuleCreate() ;//const = 0;};Q_DECLARE_INTERFACE(MyModuleInterface, "mywww.My.MyModuleInterface/1.0")#endif
#ifndef MYPLUG_H#define MYPLUG_H#include <QObject>#include <QThread>#include "../app/interfaces.h"//это собственно определение моего модуля, который должен чо-то выполнятьclass MyModule : public QThread{ Q_OBJECTprotected: void run();/*тут добавлю потом в public, private различные необхлдимые мне методы*/};//это как я понял плагин с интерфейсомclass MyModulePlugin : public QObject, public MyModuleInterface{ Q_OBJECT Q_INTERFACES(MyModuleInterface)public: void* MyModuleCreate();};#endif
#include <QtGui>#include "myPlug.h"//void MyModule::run(){ printf("Module is Running \n"); /* тут будет собственно реализован к примеру алгоритм работы модуля */}//void* MyModulePlugin::MyModuleCreate(){ return new MyModule();}Q_EXPORT_PLUGIN2(mymoduleplugin, MyModulePlugin)
virtual void* MyModuleCreate() ;//const = 0;
virtual void* MyModuleCreate() = 0;
class MyModuleInterface{public: virtual ~MyModuleInterface() {} virtual void* MyModuleInterface();//...