Loading Konqueror sidebar plugins using KLibLoader::library()
David Faure
faure at kde.org
Tue Sep 26 11:15:58 BST 2006
On Tuesday 26 September 2006 11:24, Matthias Kretz wrote:
> On Tuesday 26 September 2006 10:53, David Faure wrote:
> > On Sunday 24 September 2006 17:07, Krzysztof Lichota wrote:
> > > I have come across the following problem: my Konqueror sidebar plugin
> > > has to export some symbols from its library to be used in its plugins.
> >
> > So you have a plugin which itself has plugins? Interesting ;)
>
> Well, we've had that all the time with KPartsplugins as well :-)
Oh. Indeed.
> > globalLibrary() has always been said to be "the right thing to do".
>
> I thought it was the opposite. globalLibrary was to be considered as a
> workaround, no?
Well. It's the right thing to do in order for dynamic_cast to work across
plugin boundaries, and using cleanly separated namespaces would be 'right' too,
but indeed this is probably idealistic and breaks easily in practice.
> > So I wouldn't object to it being used there, as long as you check that it
> > still all works - e.g. that the current plugins don't have symbol conflicts
> > with the rest of the code [or with each other?].
>
> A better fix would be to put the "public" parts of the sidebar plugin into a
> shared lib and let both the sidebar plugin and the the plugin to the sidebar
> plugin link to that lib.
Indeed. I agree. This is in fact what we do in koffice, with e.g. "libkwordprivate.so"
which the part and its plugins link to.
On Tuesday 26 September 2006 12:02, Lubos Lunak wrote:
> Just make sure all of your plugins link against all of their dependencies
> (-no-undefined in LDFLAGS for KDE3, no idea about KDE4).
It's on by default everywhere. No plugins or libs with undefined symbols are
allowed in kde4 code. This is why I moved kdedmodule.cpp to a shared lib (kdecore) :)
--
David Faure, faure at kde.org, sponsored by Trolltech to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).
More information about the kde-core-devel
mailing list