Problems using QT library with QT application
-
Hello there. Would appriciate some help I am having with a problem using my own custom dll (yes this is under windows, for some reason I suspect it falls down to how windows handles threading, the library runs just fine under linux).
The library is being used within another Qt application so I initialize QApplication before I use the .dll
Still I get the message "QEventLoop: Cannot be used without QApplication", when I run the debug version. If I build the release version it works fine. I have built the library separately for release and debug and defined them in the .pri project file.
I also get some warnings:
"warning: 'Licensevalidator::staticMetaObject' redeclared without dllimport attribute after being referenced with dll linkage"
which I suspect might be related but not the sole cause, since I get the same errors when bulding release and as mentioned the release executable works fine for some weird reason.
Where do I start to troubleshoot and solve this?
-
Hello there. Would appriciate some help I am having with a problem using my own custom dll (yes this is under windows, for some reason I suspect it falls down to how windows handles threading, the library runs just fine under linux).
The library is being used within another Qt application so I initialize QApplication before I use the .dll
Still I get the message "QEventLoop: Cannot be used without QApplication", when I run the debug version. If I build the release version it works fine. I have built the library separately for release and debug and defined them in the .pri project file.
I also get some warnings:
"warning: 'Licensevalidator::staticMetaObject' redeclared without dllimport attribute after being referenced with dll linkage"
which I suspect might be related but not the sole cause, since I get the same errors when bulding release and as mentioned the release executable works fine for some weird reason.
Where do I start to troubleshoot and solve this?
First of all I would check that both application and dlls are built using the same CRTs ( toolchain and even debug/release matters ).
If everything is the same, second question is why did you mention threading. Usage of dll and threading are kind of unrelated.
Usually I would expect such problem if you have static objects in dlls. They are going to be instantiated before QApplication.
-
Hi,
What is Licensevalidator ? A widget ? A static one ?
-
Both use the same toolchain (mingw32-make, qmake, win32g++), as for the threading issue this is more speculating on my part since it works fine under other operating systems besides windows.
The difference has nothing to do with threads, but there might be difference in initialization order.
And 90% of similar problems I've seen are related to static object initialization order,
In any cases something is mostly likely instantiated before QApplication probably when dll is loaded. -
Linux and Windows are pretty different when it comes to dll handling. Did you export your classes/methods properly ?
-
Linux and Windows are pretty different when it comes to dll handling. Did you export your classes/methods properly ?
Here is the header files (omitted some code). I had to use pastebin for this, because when I tried to wrap the code tags in '@' the forum acted up (the preview pane at least went nuts)
licensevalidator.h:
licensevalidator_global.h:
Pro file: