XAudio2でアクセス違反が発生する問題

Visual Studio 2012のC++のMFCでしか確認していませんが、Xaudio2を使っていると必ずと言っていいほど、

初回例外が 0x5CCBA5E0 (CartoonD.exe) で発生しました: 0xC0000005: 場所 0x5CCBA5E0 の実行中にアクセス違反が発生しました。
ハンドルされない例外が 0x5CCBA5E0 (CartoonD.exe) で発生しました: 0xC0000005: 場所 0x5CCBA5E0 の実行中にアクセス違反が発生しました。

のようなエラーが出てプログラムが強制終了します。

原因はCOMが勝手にXAudio2のDLLをアンロードするためで、それを防ぐために、メモリーにXAudio2のDLLを明示的にLoadLibraryで読み込んだらいいようです。

以下の参考サイトに2種類の解決策のソースがあるので、いずれかを実装したらうまくいきました。

参考サイト:http://social.msdn.microsoft.com/Forums/vstudio/en-US/1833af9d-7f8c-4f77-a765-f626a3221f91/com-apartments-sta-object-corrupting-an-mta-object?forum=vcgeneral

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA