Zugriff auf dll mit COM-Objekt drin mit Windows/Mingw

Alles rund um die Programmierung mit Qt
Antworten
gerome69
Beiträge: 188
Registriert: 28. April 2006 22:50
Wohnort: Berlin
Kontaktdaten:

Zugriff auf dll mit COM-Objekt drin mit Windows/Mingw

Beitrag von gerome69 »

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):

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();

}
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:

Code: Alles auswählen

#include <QtCore>
#include "xfocomctl42.tlh"
#include "xfocomctl42.tli"
...
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
Antworten