Ich habe eine nicht verwaltete C++ - Klasse, die eine com-Karte enthält. EX:nicht aufgelöstes externes Symbol ... QueryInterface
BEGIN_COM_MAP
(MyClass)
COM_INTERFACE_ENTRY(...)
END_COM_MAP
Aber jetzt innerhalb der Klasse, wenn ich this-> Query-Interface versuche Aufruf ich die folgende Fehlermeldung erhalten:
unresolved external symbol "public: virtual long __stdcall CTest::QueryInterface(struct _GUID const &,void * *)" ([email protected]@@[email protected]@[email protected]) referenced in function "public: __thiscall CTest::CTest(void)" ([email protected]@[email protected])
Aber jetzt, wenn ich versuche, und eine Interface Methode implementieren I erhalten folgende Fehlermeldung:
error C2535: 'HRESULT CTest::QueryInterface(const IID &,void **) throw()' : member function already defined or declared
Was mache ich falsch?
Unabhängig davon, ob Sie * QueryInterface aufrufen können, es handelt sich um eine virtuelle Funktion, daher gilt der Standard-Hinweis * gegen *, der virtuelle Methoden von Konstruktoren aufruft. –
QueryInterface (alias QI) wird im Allgemeinen nicht von Konstruktoren aufgerufen, da es darauf angewiesen ist, dass das Objekt vollständig erstellt wurde. Objekte werden aus der Basisklasse out erstellt, und wenn die COM-Unterstützung als Wrapper um eine Basisklasse hinzugefügt wird, funktioniert QI von keinem Konstruktor entlang der Vererbungskette. Also diese Sachen werden normalerweise in einer FinalConstruct oder einer Initialize Methode gemacht. –
Vielen Dank für die Antworten Jungs. Das waren großartige Erklärungen. – Kyle