2017-07-28 12 views
1

以下のメソッドは、単一のオブジェクト作成のために複数回実行されており、最終的にはActiveXコントロールオブジェクトの作成に失敗します。 HRESULTの値は、同じ方法を用いて正常に作成別のActiveXコントロールとオブジェクトに対して一度だけ実行されているHRESULT = -2147467262VC++ 6.0でActiveXコントロールの "オブジェクトの作成に失敗しました"

STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) 
{ 
     HRESULT hres = _Module.GetClassObject(rclsid, riid, ppv); 
     return hres; 
} 

を示す:HRESULT = 0。

オブジェクトの作成に失敗した可能性がある理由について助けてください。

+0

上記の方法に含まれている「返品拒否」を投稿してください。 – Navneet

+1

エラーコードは 'E_NOINTERFACE'です。つまり、' rclsid'に対応するオブジェクトは実際には 'riid'を介して要求されたインタフェースをサポートしていません。理由を理解してください。 –

+0

はい、上記の負のHRESULT値は、0x80004002/ E_NOINTERFACEのエラーコードに "No such interface supported"という記述があります。 MSDNに準拠しています。しかし、ActiveXコントロールのオブジェクトを作成する際に、これを引き起こす可能性があります。 – Navneet

答えて

0

このコントロールの場合と同様に、永続状態を持つActiveXコントロールは、IPersistStreamまたはIPersistStreamInitを実装する必要があります。

下で、線 "COM_INTERFACE_ENTRY(IPersistStreamInit)" を追加する "はBEGIN_COM_MAP(MyControlと)-------- END_COM_MAP()" を

は、問題を解決しました。

関連する問題