C#で実装したインターフェイスを呼び出すC++プログラムがあります。私は一貫して0x80131023 HOST_E_CLRNOTAVAILABLE
というエラーを受け取りました。これはCLR has been disabled due to unrecoverable error
と定義されています。私のプログラムが呼び出されない限り、C++プログラムはこのエラーを生成しませんが、私はスタックトレース内のどの関数も見ることができません。問題を特定する上でどのようなヒントがありますか?C#プログラムは、C#インターフェイスを呼び出すときにHOST_E_CLRNOTAVAILABLEを受け取ります。
EDIT: 私はレイトバインディングを使用して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メソッドが呼び出されると、前述のエラーが返されます。
ネイティブのC++プログラムでは、CLRを最初にロードして初期化することなくマネージコードを呼び出すことはできません。最初にCLRがロードされたことをどのようにして確認したかについては何も述べていません。最初にそれを記録せずに答えを得ることはできません。 –
@HansPassantお詫び申し上げます、私は何が役に立つとは思っていませんでした。私はアドバイスとして質問を更新しました。 –