ときどき、私が実装した 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)