ページ 11

頻繁にデバック無しで実行する時、エラーでEXEが作成されない・・・

Posted: 2012年6月30日(土) 12:36
by abeshi
こんにちわ。超初心者の高校生です。今DXライブラリでプログラムを書いているのですが、結構頻繁にビルドするとexeを開くことができません、とエラーが出ます。
調べたところ、ウィンドウを開いたまま「デバック無しで実行」するとエラーが出るということでした。
しかしきちんとウィンドウ消したあとでもなぜかexeを開けないというものでした。

なぜなのでしょうか?

つたない文章ですがどなたかお願いします。

Re: 頻繁にデバック無しで実行する時、エラーでEXEが作成されない・・・

Posted: 2012年6月30日(土) 12:54
by nil
何らかの原因でDXライブラリが正常に終了しなかったのでしょう。

タスクマネージャー、プロセスから実行中になっているそのプログラムを終了させればいいです

Re: 頻繁にデバック無しで実行する時、エラーでEXEが作成されない・・・

Posted: 2012年6月30日(土) 12:55
by softya(ソフト屋)
こういう場合は大抵終了処理がまずくてウィンドウが消えてもプログラムは動いたままって事が多いです。
タスクマネージャでプロセスが消えているか確認してみて下さい。

それと、プログラムを見せてもらえると問題点が指摘できると思います。

Re: 頻繁にデバック無しで実行する時、エラーでEXEが作成されない・・・

Posted: 2012年6月30日(土) 13:18
by abeshi
softyaさん、涼雅さん

ありがとうございます。
おっしゃってたとおりプログラムは終了していませんでした。

メインルーチンはこんな感じなのですが
やっぱりどこかわるいところがあるのでしょうか??
code
#include "DxLib.h"
#include "PlayerMgr.h"
#include "tama_seigyo.h"
#include "tama_mgr.h"
#include "Keyboard.h"
#include "enemy_story.h"
#include "enemy_seigyo.h"
#include "enemy_mgr.h"
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE),DxLib_Init(),SetDrawScreen( DX_SCREEN_BACK );
story_syokika();
PlayerMgr_Initialize(); //プレイヤー管理モジュール初期化
tama_Initialize_select(); //弾内容を初期化
while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
Keyboard_Update(); //キーボードの更新
PlayerMgr_Update(); //プレイヤー管理モジュールの更新
PlayerMgr_Draw(); //プレイヤー管理モジュールの描画
tama_update();//時期の球の軌道を更新
tama_drow();// 玉の軌道を描く
story_update();//敵管理モジュールの更新
enemy_drow();
}
PlayerMgr_Finalize(); //プレイヤー管理モジュールの終了処理

DxLib_End();
return 0;
}

/code

Re: 頻繁にデバック無しで実行する時、エラーでEXEが作成されない・・・

Posted: 2012年6月30日(土) 13:34
by softya(ソフト屋)
codeタグの使い方が間違ってますので必ずプレビューで確認してくださいね。

コード:

#include "DxLib.h"
#include "PlayerMgr.h"
#include "tama_seigyo.h"
#include "tama_mgr.h"
#include "Keyboard.h"
#include "enemy_story.h"
#include "enemy_seigyo.h"
#include "enemy_mgr.h"
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
    ChangeWindowMode(TRUE),DxLib_Init(),SetDrawScreen( DX_SCREEN_BACK );
	story_syokika();
    PlayerMgr_Initialize();    //プレイヤー管理モジュール初期化
	tama_Initialize_select();	//弾内容を初期化
    while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
        Keyboard_Update();    //キーボードの更新
        PlayerMgr_Update();   //プレイヤー管理モジュールの更新
        PlayerMgr_Draw();    //プレイヤー管理モジュールの描画
		tama_update();//時期の球の軌道を更新
		tama_drow();// 玉の軌道を描く
		story_update();//敵管理モジュールの更新
		enemy_drow();
    }
    PlayerMgr_Finalize();    //プレイヤー管理モジュールの終了処理

    DxLib_End();
    return 0;
}
ぱっと見は異常ないですね。
デバッガのブレークポイントでDxLib_End();にたどり着いているか調べてみて下さい。