トップページ > 過去ログ > 記事閲覧
MinGWでMATRIXの計算するとアプリケーションエラー
名前:taru49 日時: 2013/01/03 22:05

MinGWでMATRIXを使い計算をすると「動作を停止しました」のダイアログが表示されてしまいました。 以下のコードで再現しました。 int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ); DxLib_Init(); MATRIX matRotX = MGetRotX( 0.0 );// この行だけでもアプリケーションエラーがWindowsログに記録されました。 MATRIX matRotY = MGetRotY( 0.0 ); MATRIX mat1 = MMult( matRotX, matRotY ); MATRIX mat2 = MMult( mat1, matRotY );// 計算に使うと「動作を停止しました」のダイアログが表示されます。 DxLib_End(); return 0; } Windowsログでは 例外コード:0xc0000005 メモリアクセス違反 が記録されていました。 いろいろ試したところ MATRIX を使う関数を使用した時点でアプリケーションエラーになるようです。 環境はWindows7(64bit) MinGW(G++4.7.0) DXライブラリver3.09bです。 VC++では発生しませんでした。 年始でお忙しいと思います。 お手すきの際にでも調べて頂ければ幸いです。 よろしくお願いします

Page: 1 |

Re: MinGWでMATRIXの計算するとアプリケーションエラー ( No.1 )
名前:管理人 日時:2013/01/05 19:53

載せて頂いたプログラムを手元で実行してみましたが、 アプリケーションエラーは発生しませんでした ただ、私の手元のバージョンは G++ 4.5.2 なので もしかしたらバージョンが違うことが原因かもしれません すみません、詳しくないのでご質問なのですが、 MinGW のパッケージでは現在も G++ 4.6.2 のようなのですが G++ 4.7.0 を使えるようにする正しい手順などありましたら 教えて頂けないでしょうか? ( sourceforge からは単体で G++ 4.7.2 がダウンロードできますが、  こちらの中身を上書き、で問題ないでしょうか )
Re: MinGWでMATRIXの計算するとアプリケーションエラー ( No.2 )
名前:taru49 日時:2013/01/06 11:49

4.6.2ではアプリケーションエラーが発生しないことを確認しました。 また、4.7.2では発生しました。 ご指摘の通りバージョンの違いが原因だったようです。 4.6.2でも問題ないので4.6.2を使っていこうと思います。 4.7以降を使う方法ですが、 新規の場合はmingw-get-inst-20120426.exeを使い Repository Catalogues で Download latest repository catalogues を選択すると 最新のもの(4.7.2)が入ります。 既存のものをアップグレードする場合はコマンドプロンプトから mingw-get update mingw-get upgrade とすると最新のもの(4.7.2)になります。 上書きでも大丈夫だと思いますが、調べたわけではないので確証はありません
Re: MinGWでMATRIXの計算するとアプリケーションエラー ( No.3 )
名前:管理人 日時:2013/01/08 22:04

教えて頂いた方法で 4.7.2をインストールすることができました ( Repository Catalogues で Download latest repository catalogues を使用する方法にしました ) 手元で試してみた限りでは既存のaファイルを使用しても 4.7.2 でも問題なく動作しました・・・ 少し謎ですが、taru49さんも 4.6.2 を使われるとの事ですのでこの件は一旦様子見にしたいと思います

Page: 1 |