Ich möchte eine COM-DLL in meiner C++ - Bibliothek verwenden. Die Art und Weise ich gemustert es geht, ist die DLL-TLB-Datei #import, was ich auch tat:Wie COM Dll in meinem C++ Programm zu verwenden ist
#import "mycom.tlb" no_namespace
Das Problem ist, ich weiß nicht recht, wo diese Erklärung zu platzieren. sollte es in der H-Datei oder der CPP-Datei sein? oder vielleicht die Datei stdafx.h? Ich habe versucht, es in die CPP-Datei zu legen, nur zum Testen.
in der H-Datei, die ich dieses Mitglied erklärt haben:
ILogicSecuredPtr m_pbLogic;
(wo ILogicSecured ist die Schnittstelle I mit dll in meinem COM arbeiten wollen)
Dann habe ich diese im Konstruktor zu instanziiert die Schnittstelle:
CoInitialize(NULL);
m_pbLogic(__uuidof(LogicSecured));
(LogicSecured wo der Name des Objekts ist, das die Schnittstelle implementiert)
IIm destructor hinzugefügt:
CoUninitialize();
Dies wird jedoch nicht kompilieren, egal wo ich versuche, die # Import Erklärung zu platzieren. es erkennt das ILogicSecured-Objekt einfach nicht. ich diesen Fehler in der H-Datei:
Error 2 error C2146: syntax error : missing ';' before identifier 'm_pbLogic'
ich auch soll erwähnen, dass, wenn ich (in Visual Studio) F12 auf der ILogicSecuredPtr Erklärung, es mich auf die tlh Datei dauert nur gut. Also ich weiß es erkennt es.
Was mache ich hier falsch?
Vielen Dank. Roey
Kann ich die Handlung ein wenig verdicken? Wenn ich versuche, die Datei #import in die Datei stdafx.h einzufügen, die m_pbLogic (__ uuidof (LogicSecured)); Stück Code kompiliert nicht, sagen Fehler 18 Fehler C2064: Begriff bewertet nicht zu einer Funktion, die 1 Argumente – Roey
Das ist richtig - Sie versuchen, den Member Variablenkonstruktor im Konstruktor Körper aufrufen - das ist nicht erlaubt. Sie sollten stattdessen CreateInstance() - Methode des IWhatevertr verwenden. – sharptooth
Danke für die schnelle Antwort. Können Sie mir bitte ein Beispiel geben, wie CreateInstance in meiner Situation aufgerufen wird? und wo es zu platzieren? – Roey