Программа C ++, получающая HOST_E_CLRNOTAVAILABLE при вызове интерфейса C # - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть программа на C ++, вызывающая интерфейс, который я реализовал в C #.Я последовательно получаю ошибку 0x80131023 HOST_E_CLRNOTAVAILABLE, которая определяется как CLR has been disabled due to unrecoverable error.Программа на c ++ не выдает эту ошибку, если не вызывается моя программа, но я не вижу ни одной из своих функций в трассировке стека.У кого-нибудь есть какие-либо советы о том, как решить проблему?

РЕДАКТИРОВАТЬ: я использую позднюю привязку для создания интерфейса IDispatch.

 IUnknown* pUnknown;
 hRC = CoCreateInstance(
        MyProgID,                  
        0,                          
        CLSCTX_ALL,                 
        IID_IUnknown,               
        (void**) &pUnknown);        
hRC = pUnknown->QueryInterface(
        IID_IDispatch,              
        (void**) &_pService );      
pUnknown->Release();  

Затем вызывается с помощью:

hRC = _pService->Invoke(
        _DispIDs[nDispIDIndex], IID_NULL, LOCALE_USER_DEFAULT,
        METHOD_TO_CALL, &Disp, &VarResult, NULL, NULL ); 

Вызывает большинство методов успешно без ошибок.Когда вызывается метод Close, он возвращает указанную ошибку.

1 Ответ

1 голос
/ 03 февраля 2012

Наиболее вероятный режим сбоя в этом случае - один из ваших вызовов отключил управляемое исключение, которое не было перехвачено и вызвало завершение работы CLR.Это могло произойти в потоке, который был запущен управляемым кодом, поэтому он не будет возвращен вам с HRESULT.Это оставляет след, окно вывода должно содержать уведомление об этом, «исключение первого шанса» для типа исключения 0xe0534f4d.

Использование управляемого отладчика для устранения неполадок.VS имеет один: Project + Properties, Debugging, тип отладчика.Вы можете принудительно выполнить автоматический разрыв с помощью Отладки + Исключения, отметьте флажок Брошенный для исключений CLR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...