Необработанное исключение в vHRESULT не удалось

Я знаю, что VC ++ 6.0 очень старый язык, но у меня нет выбора, я просто поддерживаю существующую программу, и я сталкиваюсь с этой ошибкой

Unhandled exception in Assess.exe (KERNELBASE.DLL): 0xE06D7363: Microsoft C++ Exception

И вот мой код

 HRESULT hr = CoInitialize(NULL);

// Create the interface pointer.
IModulePtr pI(__uuidof(RPTAModuleInterface)); //the error is here

После отладки и использования f11 программа идет в COMIP.H и вот код

explicit _com_ptr_t(const CLSID& clsid, IUnknown* pOuter = NULL, DWORD dwClsContext = CLSCTX_ALL) throw(_com_error)
: m_pInterface(NULL)
{
HRESULT hr = CreateInstance(clsid, pOuter, dwClsContext);
//the program goes to CreateInstance Method

if (FAILED(hr) && (hr != E_NOINTERFACE)) {
_com_issue_error(hr);
//the program goes here and show the error msg
}
}

А вот и CreateInstance

HRESULT CreateInstance(const CLSID& rclsid, IUnknown* pOuter = NULL, DWORD dwClsContext = CLSCTX_ALL) throw()
{
HRESULT hr;

_Release();

if (dwClsContext & (CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)) {
IUnknown* pIUnknown;

hr = CoCreateInstance(rclsid, pOuter, dwClsContext, __uuidof(IUnknown), reinterpret_cast<void**>(&pIUnknown));

if (FAILED(hr)) {
// the program goes here and return the hr
return hr;
}

hr = OleRun(pIUnknown);

if (SUCCEEDED(hr)) {
hr = pIUnknown->QueryInterface(GetIID(), reinterpret_cast<void**>(&m_pInterface));
}

pIUnknown->Release();
}
else {
hr = CoCreateInstance(rclsid, pOuter, dwClsContext, GetIID(), reinterpret_cast<void**>(&m_pInterface));
}

return hr;
}

Я не знаю, в чем здесь ошибка, это заголовочный файл, и я думаю, что здесь нет ошибки. Любая идея, как исправить эту вещь?

обновленный

в моем RPTAInterface.tlh я видел декларацию RPTAModuleInterface

struct /* coclass */ RPTAModuleInterface;

struct __declspec(uuid("d6134a6a-a08e-36ab-a4c0-c03c35aad201"))
RPTAModuleInterface;

4

Решение

_com_issue_error() бросает _com_error исключение, что ты не ловишь. Вы должны обернуть свой код в try/catchНапример:

try
{
IModulePtr pI(__uuidof(RPTAModuleInterface));
// ...
}
catch(const _com_error& e)
{
// e.Error() will return the HRESULT value
// ...
}

очевидно CoCreateInstance() терпит неудачу. Вероятно, на компьютере не установлена ​​библиотека, которая регистрирует CoClass для RPTAModuleInterfaceтак что это не может быть создано. Но вам придется взглянуть на фактический HRESULT чтобы быть уверенным, почему CoCreateInstance() терпит неудачу.

3

Другие решения


По вопросам рекламы [email protected]