トップページ > 過去ログ > 記事閲覧
DxLib_Endで0xC0000005例外
名前:かげさん 日時: 2012/03/22 21:25

以前に「DxLib_Endで例外」というスレッドがありましたが それと同じ問題が発生しました。 HatsuneMikuBoukenki.exe の 0x03e63445 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xfeeeff52 を読み込み中にアクセス違反が発生しました。 なお、デバッガで動かした時に発生し ビルドされたexeを起動した時には発生しません。 コントローラのバイブレーション機能を使いたかったので BUFFALO BSGC101,201 シリーズドライバー for Windows Ver1.00(32ビット版) をインストールしたところ発生しました。 ドライバのダウンロードURLは以下のとおり buffalo.jp/download/driver/supply/bsgc01.html インストールする前までは正常に動作していました。 BUFFALO BSGC101,201 シリーズドライバー for Windows Ver1.00(32ビット版) をアンインストールすると例外は発生しなくなります。 「DxLib_Endで例外」にあった dxlib.o.oo7.jp/file/DxLibEndTest_VC.exe をダウンロードして確認したところ DxInput.cppの754行目にある pad->Device->Release() ; で例外が発生しています。 Windows XP SP3(最新のWindows Update適用済み) Visual C++ 2008 Express Edition Microsoft Visual Studio 2008 Version 9.0.21022.8 RTM Microsoft .NET Framework Version 3.5 SP1 ドライバをアンインストールすれば特に問題はないのですが 何か対策はあるのでしょうか?

Page: 1 |

Re: DxLib_Endで0xC0000005例外 ( No.1 )
名前:管理人 日時:2012/03/25 18:11

私も手元で振動機能に対応したパッドでテストしてみましたが、特に DxLib_End で停止することはありませんでした テストにはこちらの2秒間単純に振動させて終了するだけのプログラムを使用したのですが、かげさんの環境では こちらのプログラムでも同様にエラーが発生しますでしょうか? #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // DXライブラリ初期化処理 ChangeWindowMode( TRUE ) ; if( DxLib_Init() == -1 ) return -1; // エラーが起きたら直ちに終了 // 振動開始 StartJoypadVibration( DX_INPUT_PAD1, 1000, 10000 ) ; // 2秒間経過するまで待つ WaitTimer( 2000 ) ; // DXライブラリ使用の終了処理 DxLib_End() ; // ソフトの終了 return 0 ; }
Re: DxLib_Endで0xC0000005例外 ( No.2 )
名前:かげさん 日時:2012/03/25 21:35

調査していただき、ありがとうございます! 例示いただいたソースを実行したところ 「デバッグ実行」時に例外が発生しました。 DxLibTestProject.exe の 0x03d73445 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xfeeeff52 を読み込み中にアクセス違反が発生しました。 先の「DxLib_Endで例外」にあったソースで ステップ実行で確認したところ DxInput.cppの754行目にある pad->Device->Release() ; で例外が発生していました。 同じソースでも「デバッグなしに開始」だと 例外は発生しませんでした。
Re: DxLib_Endで0xC0000005例外 ( No.3 )
名前:管理人 日時:2012/03/25 22:28

お試し頂きありがとうございます 恐らくですが、コントローラのドライバに何かしらの原因があるのだと思います 「デバッグなしに開始」では例外が発生しないとのことですので、VisualSdutioの デバッグ機能との相性が何か悪いのかもしれません 「デバッグなしに開始」では例外が発生しないということは、恐らくビルドして 作成される exe ファイルを直接ダブルクリックして実行した場合も例外が発生しないと思います なので、気持ち悪いかもしれませんが特に何もしなくても完成したプログラムの実行には 支障を来たさないと思います 毎回デバッグ開始のプログラム終了時にエラーが発生するが鬱陶しい場合は #ifndef _DEBUG DxLib_End(); #endif という感じに、デバッグビルドのときは DxLib_End を実行しないようにすると良いかもしれません (・・; ( DxLib_End の解説には実行しないで終了すると駄目と書いていますが、XP 以降の OS では  明示的に終了処理をしなかった場合も OS が後始末をしてくれて特に問題が無いようですので・・・ )
Re: DxLib_Endで0xC0000005例外 ( No.4 )
名前:かげさん 日時:2012/03/26 20:41

回答いただきありがとうございます。 exe ファイルを直接実行した場合も例外が発生しないので Visual Sdutioのデバッグ機能とドライバの相性みたいです。 #ifndef _DEBUG DxLib_End(); #endif 作戦で行こうと思いますので この件はクローズとしたいと思います。

Page: 1 |