[Interest] QPlugin and RTTI
Thiago Macieira
thiago.macieira at intel.com
Wed Jun 18 17:10:02 CEST 2014
Em qua 18 jun 2014, às 15:20:03, Etienne Sandré-Chardonnal escreveu:
> Hi,
>
> I would like to implement a plugin system in my app and I'm totally
> ignorant of dynamic library mechanisms. So I'm trying with a QPlugin. I'm
> using Qt 4.8.5, gcc 4.8.0 mingw64.
>
> The question is : can RTTI work between the plugin and the app?
Yes. But remember the base rule of plugins. A plugin system has:
- zero or more applications
- zero or more plugins
- exactly one library
The important part is the library. The base class for RTTI needs to be in the
library and properly exported from it (declspec(dllexport) on Windows).
> I will define and include these headers in both the app and the plugin:
>
> - A base class Base which will be pure virtual
> - A few DerivedA, DerivedB classes which will be pure virtual, too.
>
> Then the plugin will derive from one of the DerivedX classes, and provide a
> method in the interface which will list its implemented derived class names
> as strings, and provide a factory for them returning Base* objects.
>
> Then, the app will dynamic_cast these pointers to DerivedA, DerivedB, etc...
>
> Will the dynamic_cast work? Is there a special way to export/declare things
> for that?
Yes, provided those classes are all in the library.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
More information about the Interest
mailing list