Zugriff auf dll mit COM-Objekt drin mit Windows/Mingw
Verfasst: 25. Februar 2009 14:51
Hallo zusammen,
folgendes unter Windows, Qt und VisualStudio:
ich habe eine dll (XfoComCtl42.dll, gehört zum AntennaHouse XSLT Formatter), die ich mit regsvr32.exe XfoComCtl42.dll registriere.
Mit dem Visual Studio funktioniert folgender Code (relevante Passage only):
Sprich, ich kann das Com-Objekt aus der DLL benutzen.
Visual Studio erzeugt mir durch diese "#import" Anweisung automatisch eine .tlh und tli-Datei
Soweit so gut.
Jetzt würde ich das gerne auch mit dem Mingw-Compiler benutzen.
Geht das überhaupt?
Wenn ja:
Wie instanziere ich ein COM-Objekt? Wie greife ich auf dessen Methoden und Eigenschaften zu?
Mein erster Versuch war:
Aber das scheitert daran, daß comdefs.h verlangt wird und das ist, wenn ich reinsehe eindeutig VC-spezifisch. Somit kann ich mit diesen automatisch generierten Headern mit mingw nichts anfangen.
Ich habe mal nach "Qt dll com interface" gegoogelt, aber nicht wirklich was gefunden. Vielleicht die falschen Schlagworte?
Danke für Tips, Codeschnipsel und "richtige" Stichwörter zum Suchen, Gérôme
folgendes unter Windows, Qt und VisualStudio:
ich habe eine dll (XfoComCtl42.dll, gehört zum AntennaHouse XSLT Formatter), die ich mit regsvr32.exe XfoComCtl42.dll registriere.
Mit dem Visual Studio funktioniert folgender Code (relevante Passage only):
Code: Alles auswählen
#import "C:\\Programme\\AntennaHouse 4.2\\XfoComCtl42.dll"
#include <QtCore>
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
XFOCOMCTLLib::IXfoObjPtr xfoObj;
CoInitialize(NULL);
if (!SUCCEEDED(xfoObj.CreateInstance("XfoComCtl.XfoObj"))) throw QString("AntennaHouse initialisation failed.");
xfoObj->DocumentURI ="c:\\temp\\test.xml";
xfoObj->StylesheetURI ="c:\\temp\\test.xsl";
xfoObj->OutputFilePath ="c:\\temp\\test.pdf";
xfoObj->Execute();
}
Visual Studio erzeugt mir durch diese "#import" Anweisung automatisch eine .tlh und tli-Datei
Soweit so gut.
Jetzt würde ich das gerne auch mit dem Mingw-Compiler benutzen.
Geht das überhaupt?
Wenn ja:
Wie instanziere ich ein COM-Objekt? Wie greife ich auf dessen Methoden und Eigenschaften zu?
Mein erster Versuch war:
Code: Alles auswählen
#include <QtCore>
#include "xfocomctl42.tlh"
#include "xfocomctl42.tli"
...
Ich habe mal nach "Qt dll com interface" gegoogelt, aber nicht wirklich was gefunden. Vielleicht die falschen Schlagworte?
Danke für Tips, Codeschnipsel und "richtige" Stichwörter zum Suchen, Gérôme