DXライブラリLoadGraphによる強制終了
Posted: 2011年8月26日(金) 09:20
初めまして。
DXライブラリの、LoadGraphやLoadDivGraphを呼び出した際に、アプリケーションが終了してしまい、原因及び解決策が分からず困っております。
Visual C++ 2008 Express Editionを用いてゲーム製作をしています。
デバッグモードでは何の異常もなく読み込めているものが、exeファイルから直接開いて、デバッガを使わずに起動すると、件の関数の部分で終了してしまいます。
終了時のメッセージは「問題が発生したため、test.exeを終了します。ご不便をおかけして申し訳ありません。」というものです。
以下、ソースコードです。量が多いので、問題の部分だけ抜き出して記述しますがご容赦ください。
LoadGraphの部分でアプリケーションが終了する、というのは、PlaySoundFileを順番に挟んでいくことで、終了前に音が鳴るかどうかで確認しました。
LoadGraph関数を呼び出す直前に、InitGraphを用いて読み込みをリセット、というのは試してみました。
その場合も同じくLoadGraphで終了してしまうので、LoadGraphの過度な呼び出しではない、と思います。
デバッグモードでは問題なく動くので、LoadGraphの返り値が-1になっていないことは確認しました。
LoadGraphの引数に、file_nameではなく、"dat/map/3.png"と直接打ち込んでも同じ結果でした。
なので、file_nameやsprintf_sの方に問題があるとも思えません。
それと、このコードはRPGのマップ読み込み関数の一部で、引数nで読み込むマップを決定するのですが、読み込むマップによってこの症状が発生するときとしないときがあります。
マップ番号nが、3のときと7のときにのみ、この症状が起こるようです。
デバッグモードでは問題ないものがリリースするとなぜ終了してしまうのか、ということと、関係する変数が同じなのになぜ終了するときとしないときがあるのか、というのが大きな疑問点です。
どうか、お力添えのほどよろしくお願い致します。
DXライブラリの、LoadGraphやLoadDivGraphを呼び出した際に、アプリケーションが終了してしまい、原因及び解決策が分からず困っております。
Visual C++ 2008 Express Editionを用いてゲーム製作をしています。
デバッグモードでは何の異常もなく読み込めているものが、exeファイルから直接開いて、デバッガを使わずに起動すると、件の関数の部分で終了してしまいます。
終了時のメッセージは「問題が発生したため、test.exeを終了します。ご不便をおかけして申し訳ありません。」というものです。
以下、ソースコードです。量が多いので、問題の部分だけ抜き出して記述しますがご容赦ください。
void map::read(int n){
int pre_image,image_x,image_y;
int n1;
char file_name[101];
FILE *fp;
switch(n){
case 1:
n1=3;
break;
case 2:
n1=2;
break;
case 3:
n1=3;
break;
case 4:
n1=3;
break;
case 7:
n1=3;
break;
case 8:
n1=3;
break;
case 9:
n1=3;
break;
case 10:
n1=4;
break;
}
sprintf_s(file_name,101,"dat/map/%d.png",n1);
pre_image=LoadGraph(file_name);
GetGraphSize(pre_image,&image_x,&image_y);
image_x /= 32;
image_y /= 32;
DeleteGraph(pre_image);
}
LoadGraph関数を呼び出す直前に、InitGraphを用いて読み込みをリセット、というのは試してみました。
その場合も同じくLoadGraphで終了してしまうので、LoadGraphの過度な呼び出しではない、と思います。
デバッグモードでは問題なく動くので、LoadGraphの返り値が-1になっていないことは確認しました。
LoadGraphの引数に、file_nameではなく、"dat/map/3.png"と直接打ち込んでも同じ結果でした。
なので、file_nameやsprintf_sの方に問題があるとも思えません。
それと、このコードはRPGのマップ読み込み関数の一部で、引数nで読み込むマップを決定するのですが、読み込むマップによってこの症状が発生するときとしないときがあります。
マップ番号nが、3のときと7のときにのみ、この症状が起こるようです。
デバッグモードでは問題ないものがリリースするとなぜ終了してしまうのか、ということと、関係する変数が同じなのになぜ終了するときとしないときがあるのか、というのが大きな疑問点です。
どうか、お力添えのほどよろしくお願い致します。