Using COM object with MinGW 4.8
-
Hi
I'm trying to use an external COM object with MinGW 4.8.I used dumpcpp to generate *.h & *.cpp file.
But it returns an empty result when I want to get the *.tlb file.
I've tried with GUID & EXE name.The *.pro file contains:
TYPELIBS = $$system(dumpcpp.exe --getfile "ext_prog.exe")
isEmpty(TYPELIBS){
message("Component is not found!")
REQUIRES += Component
}The compiler returns:
"Some of the required modules (Component) are not available."
"Skipped."Any advice?
-
you have to pull all of the necessary dlls of ext_prog.exe in your path, (e.g. the Qt libraries)
as dumpcpp will try to execute the ext_prog.exe during the generation of the tlb file.regards
Karl-Heinz -
I 've made a step forward using a different GUID.
It actually returned the Zoiper.EXE itself.Now, I'm stuck compiling QAxObject descendants - e.g. IZoiperScript class (the first in *.h file)
zoiperapi.h:281: error: no matching function for call to 'QAxObject::QAxObject(ZoiperAPI::IUnknown*, QAxObject*&)'
from zoiperapi.h:
class ZOIPERAPI_EXPORT IZoiperScript : public QAxObject { public: IZoiperScript(IDispatch *subobject = 0, QAxObject *parent = 0) : QAxObject((IUnknown*)subobject, parent) { internalRelease(); } ... }
QAxObject is defined as:
class QAxObject : public QObject, public QAxBase { QAxObject(QObject *parent = 0); QAxObject(const QString &c, QObject *parent = 0); QAxObject(IUnknown *iface, QObject *parent = 0); ... }
As QAxObject is a descendant of QObject this should not be a problem. Or miss something?
It might that the problem is caused because I've used dumpcpp from Qt 5.9? (I'm compiling with 4.8)
-
I've tried compiling with Qt 5.9, but it returns the same error.
Additionally, I had to modify the generated zoiperapi.h file:
from:
#include <qaxobject.h> #include <qaxwidget.h>
to:
#include <ActiveQt/QAxBase> #include <ActiveQt/QAxObject>
But it still complains about the QAxObject constructor