0

ときどき、私が実装した COM サービスが、C++ クライアント アプリケーションがE_NOINTERFACEエラーのために COM オブジェクトの作成に失敗し始める状態になることがあります。クライアント アプリケーションは、私が頻繁に実行する 1 回限りの実行 (永続的ではない) .exe です。

まず、COM サービスはほとんどの場合問題なく動作しますが、CoCreateInstance()突然E_NOINTERFACE. さらに混乱を招くのは、私が作成した VBScript が引き続き正常に実行され、問題なく COM オブジェクトが作成されることです。

COM サービスを再起動すると、すべてが正常に戻り、C++ アプリケーションが再び機能し始めます。

以下は、私が実行する C++ および VBScript のスニペットです。

C++

ISampleCom *MyComObj;
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);

// Create COM object
hr = CoCreateInstance(CLSID_SampleCom, 0, CLSCTX_LOCAL_SERVER, IID_ISampleCom, (void**)&MyComObj);
if(FAILED(hr))
    printf("\r\nFailed to create COM object.");

VBScript

dim version
set mycomobj = CreateObject("MyCom.Sample")

mycomobj.GetVersion(version)
4

0 に答える 0