Hello, thanks again to /Bob Hood/, /Konstantin Tokarev/ and /Thiago Macieira/.

Well, in my previous mail, I show you an example project to test my doubts about extending app through plugin addition (in this case from Static Library). After reading all yours considerations several occasions and reading Qt Documentation about plugins. I included the plugin correctly in my MainApp.

Here is the code:

//This is header file of *Lib1*

#include"lib1_global.h"

#include<QObject>

#include<QDebug>

#include<QtPlugin>

#include"../pinterface.h"

classLib1:publicQObject,publicPInterface *_//here I have to include the inherit of QObject and its macro_*

{

Q_OBJECT

Q_PLUGIN_METADATA(IID"org.Ernesto.Plugin")

*_//here I miss the plugin metadata ID and allow me instantiate this object_**__*

Q_INTERFACES(PInterface)

public:

Lib1();

QString/Name/()const;

};

//This is cpp file of *Lib1*

QStringLib1::/Name/()const

{

return"HellofromDLL";

}

//This is cpp file of *MainApp*

MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow)

{

QDirplugins("C:/lib/");

QStringListplugins_list=plugins.entryList(QStringList()<<"*.dll",QDir::Files);

foreach(QStringfilename,plugins_list) *_//In this structure I abbreviated_*

{

QStringplugin_path=QDir::toNativeSeparators(QString("%1/%2").arg(plugins.absolutePath()).arg(filename));

QPluginLoaderpl(plugin_path);

*_//My problem was the cast type, I was usin reinterpret_cast and now dynamic_cast_*

if(PInterface*myInterface=dynamic_cast<PInterface*>(pl.instance()))

ui->label->setText(myInterface->/Name/());

}

}

**

//This is header file of my interface, is included by both projects

classPInterface *_//this class was inheriting of QObject, and as Lib1 inherits of PInterface and QObject, so PInterface can´t inherits of QOjects; and of course I deleted the constructor and O_OBJECT macro._*

{

public:

virtualQString/Name/()const=0;

};

Q_DECLARE_INTERFACE(PInterface,"org.Ernesto.Plugin")

I can´t found an explanation of the differences of /reinterpret_cast/ and /dynamic_cast/, because I can´t found information about /reinterpret_cast/ in Qt Documentation (5.5.0 Qt version).

I thanks to /Steven Davidson/ (from /cconclase/ list), who four years ago taught me the /dynamic_cast/ use.

Regards,

Ernesto

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to