我有一個C++程序調用我已經在C#實現的接口時接收HOST_E_CLRNOTAVAILABLE。我一直獲得其定義爲CLR has been disabled due to unrecoverable error
錯誤0x80131023 HOST_E_CLRNOTAVAILABLE
。 C++程序不會產生這個錯誤,除非我的程序被調用,但是我看不到堆棧跟蹤中的任何函數。有沒有人有關於如何確定問題的任何提示?C++程序調用C#接口
編輯: 我使用後期綁定創建一個IDispatch接口。
hRC = _pService->Invoke(
_DispIDs[nDispIDIndex], IID_NULL, LOCALE_USER_DEFAULT,
METHOD_TO_CALL, &Disp, &VarResult, NULL, NULL);
它調用的方法最成功的,沒有錯誤:
IUnknown* pUnknown;
hRC = CoCreateInstance(
MyProgID,
0,
CLSCTX_ALL,
IID_IUnknown,
(void**) &pUnknown);
hRC = pUnknown->QueryInterface(
IID_IDispatch,
(void**) &_pService);
pUnknown->Release();
然後調用。當調用Close方法時,它返回提到的錯誤。
本地C++程序無法調用託管代碼,而無需首先加載並初始化CLR。你沒有努力描述你如何確保首先加載CLR。如果沒有首先記錄,你就無法得到答案。 – 2012-02-03 13:20:29
@HansPassant道歉,我不太確定什麼是有用的。我已經更新了建議的問題。 – 2012-02-03 14:03:24