0

有时,我实现的 COM 服务会进入我的 C++ 客户端应用程序由于E_NOINTERFACE错误而无法创建 COM 对象的状态。客户端应用程序是我经常运行的一次性运行(非持久性).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