Visual c++ CoCreateInstance失败,出现未知错误
我已经创建了一个ActiveX控件,它可以在所有的PC机上工作,除了客户端位置的两台。我已经把问题缩小到了CoCreateInstance的失败,它以未知错误失败 什么会导致这个问题 请参阅下面的代码:Visual c++ CoCreateInstance失败,出现未知错误,visual-c++,Visual C++,我已经创建了一个ActiveX控件,它可以在所有的PC机上工作,除了客户端位置的两台。我已经把问题缩小到了CoCreateInstance的失败,它以未知错误失败 什么会导致这个问题 请参阅下面的代码: try { CComPtr<IDispatch> lpTDispatch; //Following line generates an exception HRESULT hr = lpTDispatch.CoCreateInstance(_bstr_t("XBrowse
try
{
CComPtr<IDispatch> lpTDispatch;
//Following line generates an exception
HRESULT hr = lpTDispatch.CoCreateInstance(_bstr_t("XBrowseInvokerBean.Bean.1"));
//Following line do not get executed.
DWORD lasterror = GetLastError();
logFile->Write(CString("GetLastError : %u"), lasterror);
logFile->Write(CString("HRESULT Value: %X"), hr);
}
catch(CException *e)
{
//Exception does not get caught in this catch
LPSTR strError ="";
e->GetErrorMessage(strError,MAX_PATH);
logFile->Write("Exception:"+CString(strError));
CoUninitialize();
}
catch (_com_error e)
{
//Exception does not get caught in this catch
CString err2 = _com_error(HRESULT_FROM_WIN32(GetLastError())).ErrorMessage();
logFile->Write("COM ERROR2:"+CString(err2));
CoUninitialize();
}
catch(...)
{
//Exception get caught in this catch, Value returned is 0.
logFile->Write("Unknown exception occurred:%X",
HRESULT_FROM_WIN32(GetLastError()));
CoUninitialize();
}
这几乎可以肯定是由于缺少依赖关系。检查注册表,看看是否安装了XBrowseInvokerBean.Bean及其依赖的任何东西。这很奇怪。如果查看CComPtr::CoCreateInstance的源代码,您会发现它从不抛出异常。尝试拆分代码-使_bstr_t构造成为一个单独的语句,并将已构造的_bstr_t作为下一个语句传递到CComPtr::CoCreateInstance中。顺便问一下,如果在引发异常时要求调试器中断会发生什么-它指示什么异常?