Время от времени реализованная мной COM-служба будет переходить в состояние, в котором мое клиентское приложение C ++ не сможет создать COM-объект из-за E_NOINTERFACE
ошибка. Клиентское приложение — это однократный (непостоянный) .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)
Задача ещё не решена.
Других решений пока нет …