Visual Studio verfügt über eine umfangreiche Unterstützung für das Importieren von Typbibliotheken in Ihr C++ - Projekt und die Verwendung der so definierten Objekte. Zum Beispiel können Sie die #import
Direktive verwenden:
#import "CANoe.tlb"
Dies wird die Typenbibliothek importieren und konvertieren es Dateien und Implementierungsdateien auf Header - auch wird es die Implementierungsdateien verursachen, mit Ihrem Projekt und dem Header gebaut werden Dateien, die enthalten sein sollen, das sind also viele magische Sachen.
Dann erhalten Sie eine Vielzahl von typedefs für Smart-Pointer-Wrapper für die Typen und Objekte in der Typbibliothek definiert. Zum Beispiel genannt Application
wenn es eine Co-Klasse war, die die Schnittstelle implementiert IApplication
, können Sie dies tun:
ApplicationPtr app(__uuidof(Application));
Die zur Laufzeit verursachen würde, die Co-Klasse-Anwendung erstellt und an die Variable app
, und Sie gebunden sein kann wie so weiter nennen:
app->DoSomeCoolStuff();
Fehlerbehandlung durch Überprüfung des Ergebnisses der COM-Anrufe, und werfen Sie die entsprechende _com_error Ausnahme als notwendig, so bedeutet dies, Sie Ausnahme schreiben müssen sicher durchgeführt wird.
Vielen Dank an alle für die schnelle Antwort. Ich habe nicht die DLL-Datei für die Anwendung, wird also diesen Ansatz bevorzugen. Erhalte folgende Kompilierungsfehler, nach #import "CANoe.tlb" in meiner Quelldatei. - unbekanntes Zeichen '0x1' - Syntaxfehler: fehlt ';' vor Kennung 'A' - fehlender Typspezifizierer - int angenommen. Hinweis: C++ unterstützt nicht default-int - '{': fehlende Funktion Header (alte formale Liste?) Bitte schlagen Sie vor, wenn ich einen Schritt vermisse. Gibt es eine Möglichkeit, den Inhalt der TLB-Datei zu überprüfen und diese Fehler zu beheben. Vielen Dank im Voraus –
Ich schlage vor, Sie versuchen, es zu lösen, und wenn Sie es nicht schaffen, nur eine separate Frage stellen, die genügend Details zur Verfügung stellt. – sharptooth