私は内部にcomマップを持つアンマネージドC++クラスを持っています。 EX:未解決の外部シンボル... QueryInterface
BEGIN_COM_MAP
(MyClass)
COM_INTERFACE_ENTRY(...)
END_COM_MAP
しかし、今のクラスの中から、私は次のエラーを取得this-> QueryInterfaceを呼び出してしようとした場合:私は試してみて、QueryInterfaceメソッドを実装する場合、今
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])
しかしをI次のエラーが表示されます。
error C2535: 'HRESULT CTest::QueryInterface(const IID &,void **) throw()' : member function already defined or declared
私は間違っていますか?
QueryInterfaceを呼び出すことができるかどうかにかかわらず、それは仮想関数なので、コンストラクタからの仮想メソッドの呼び出しに対する標準的なアドバイス*が適用されます。 –
QueryInterface(別名QI)は、完全に構築されたオブジェクトに依存しているため、一般にコンストラクタから呼び出されません。オブジェクトは基本クラスoutから構築され、COMサポートが基本クラスの周りのラッパーとして追加された場合、QIは継承チェーンに沿ったコンストラクタから決して動作しません。 これは通常、FinalConstructまたはInitializeメソッドで行われます。 –
回答ありがとうございました。これらは素晴らしい展開でした。 – Kyle