- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:例外についてです)
Windowsの音声認識プログラムで例外が発生する
このQ&Aのポイント
- Windowsの音声認識プログラムで、printf("test2")までの出力で例外が起こってしまう問題について相談です。
- プログラムは正常に動作していてGUIでも同じ記述をしたときは問題ありません。
- アドバイスをお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 そのエラーは、CComPtr<ISpStream>のoperator->()で内部のポインタがNULLの時に発生するものです。 ::CoInitialize(NULL); を呼び出していないので、 hr = cpRecoEngine.CoCreateInstance(CLSID_SpInprocRecognizer); の部分で、COMインターフェースの作成に失敗しています。 関数の一番上で、 ::CoInitialize(NULL); を呼び出し、 関数の一番下で、 ::CoUninitialize(); を呼び出して下さい。此れで成功する筈です。 CComPtr<T>はかえってややこしくなる場合があるので、あまり使用しない方が良いかもしれません。 GUI(win32アプリケーションのプロジェクト)の方で上手くいった理由は、前もってCoInitialize()の呼び出しを行ってくれているから(多分)だと思います。
その他の回答 (1)
- anicicle
- ベストアンサー率36% (129/356)
回答No.1
>printf("test2")までの出力で例外が起こってしまいます(p!=0という例外でした)。 の「p」は何処から出てきた内容でしょうか? それと、肝心の各APIの戻り値「hr」の正当性についてのチェックがありませんが、GUIでは「本当に正しく」動作していたのでしょうか? 単純に考えでも、「GUI(Win32アプリ)」と「コンソール」ではメモリ管理など様々な違いがあるので何処でおかしくなっていても不思議ではありませんよ。