[Solved]QApplication static linkage and plugins
-
basically you have nothing to do other than creating an QApplication instance.
But to get you right:
Your main app is linked statically against all Qt libs. Only your plugin is loaded dynamically? And this plugin also uses Qt stuff? -
thanks for your reply,
if it is possible I prefer to not create a QApplication, but rather use the one from my main application if possible...
But yes only my plugins are loaded dynamically and yes they use non-ui Qt stuff
-
[quote author="jpalbertini" date="1383577128"]
But yes only my plugins are loaded dynamically and yes they use non-ui Qt stuff[/quote]
So how do you link your plugin binary against Qt?
And what does your plugin do exactly? Doesn't sound like it's non-ui stuff when a QPaintDevice is required... -
my plugins are dynamically linked against qt
basically i got two plugin, one which sends arrays of data, the other one sends QImages
-
so this means your application runs with 2 different Qt binaries...
You should have created a QApplication in your main app, right?
I still don't know where you are missing the QPaintDevice...
But nvertheless you shouldn't mix statically and dynamic linked binaries. Either way link all dynamically or statically. I would suggest you also link your "plugins statically":http://qt-project.org/doc/qt-4.8/plugins-howto.html#static-plugins.
-
one thing I also forgot to mention is that I have another app, which is dynamically linked against Qt that work fine and plugins can send QImages directly without a problem.
So my thoughts are that the QCoreApplication::self value is not pass correctly to the plugin with a statically linked app (the qApp macro is NULL)
-
sure it is, when you link your plugin against the dynamically linked version of Qt wherein the QApplication object never gets initialized.
-
Is there a way that I assign it myself ? the self and init() are marked as private so my range of action is kinda limited, without having to rebuilding Qt with some sort of a setInstance method...
-
no ... and don't do it!
You do want to assign a object from a statically linked address space into a dynamically linked one...
Doing this you will probably run into another problem sooner or later.And also that your application needs 2 Qt distributions doesn't make sense don't you think?
Link your plugins also statically and you should be fine.
-
ok thanks i'll do that