ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
たとえばゲームの設定で反映して実行みたいなのあるじゃないですか。
それでやってみたんですが起動できす、そのまま終了してしまい、デバックでやってもそれ関係のものは何も表示されてなく、実行できませんでした。誰か教えてください。
その場所のコードは です。
わかる人教えてください。
それでやってみたんですが起動できす、そのまま終了してしまい、デバックでやってもそれ関係のものは何も表示されてなく、実行できませんでした。誰か教えてください。
その場所のコードは です。
わかる人教えてください。
最後に編集したユーザー プラム on 2014年3月24日(月) 16:50 [ 編集 1 回目 ]
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
何だか開きカッコが足りないような
気がするのはさておき...
system()
で実行したいexeファイルのパスは
正しく通っていますか?
気がするのはさておき...
system()
で実行したいexeファイルのパスは
正しく通っていますか?
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
GamePlay.exeがある場所は設定.exeと同じ段階です。
これでできるはずですが・・・
これでできるはずですが・・・
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
カレントディレクトリ(恐らくハルルンさんの言う"段階")は実行ファイルと同じとは限らないですが
他の問題かもしれないのでまずはフルパス指定でテストしてみてはどうでしょう
他の問題かもしれないのでまずはフルパス指定でテストしてみてはどうでしょう
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
はい。ハルルン さんが書きました:フルパス指定?
C:・・・・・・
ってやってくの?
別にDドライブ上のファイルでもいいですけどね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
同じフォルダにあるので/とか¥とか¥¥とか書かの¥なくてもいいと思うのですが・・・(フルパス指定で¥¥でやったけどできなかった)
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
今やったら
Application "\??\C:\WINDOWS\system32\cmd.exe" found in cache
スレッド 'Win32 スレッド' (0x24) はコード 0 (0x0) で終了しました。
って出ました
Application "\??\C:\WINDOWS\system32\cmd.exe" found in cache
スレッド 'Win32 スレッド' (0x24) はコード 0 (0x0) で終了しました。
って出ました
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
そんなに難しいものではないので
環境依存でなければパスが間違っているか GamePlay.exe がおかしいかとかないと思います。
パスの概念を正しく理解されていないようなのでパスが合っているという確証も持てないですね。
system の戻り値はどうなってますでしょうか
環境依存でなければパスが間違っているか GamePlay.exe がおかしいかとかないと思います。
パスの概念を正しく理解されていないようなのでパスが合っているという確証も持てないですね。
system の戻り値はどうなってますでしょうか
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
まず初めに、プログラミングをする際、慣れない場合は日本語を入力するとき以外はIMEをいわゆる「直入力モード」にして下さい。
> フルパス指定で¥¥でやったけどできなかった
が文字通り「¥¥」と入力されたように受け取られてしまいます。数字も1234567890といわゆる半角で入力しましょう。スペースも常に半角にしておきましょう。ミスが減ります。或いは、見やすいフォントがたくさんありますのでご検討下さい。「コーディング フォント」などで検索すると出てきます。
> 同じフォルダにあるので/とか¥とか¥¥とか書かの¥なくてもいいと思うのですが
これは難しい問題です。確かにほとんどの場合は同じフォルダにあれば、その実行ファイルと同じフォルダが「作業フォルダ」になります。そのため、同じフォルダにあるファイルを参照する場合は、/とか\とか書かなくても済みます。なお、ご存じとは思いますが、\\と書くのは、C言語では\をエスケープシーケンスとしているからです。詳しくは「エスケープシーケンス C言語」で検索して下さい。
Windowsではフォルダといいますが、以下で述べるような、ハードディスクなどに実在する階層の名前としてはディレクトリと言います。詳しくは「フォルダ ディレクトリ 違い」などで検索して下さい。
カレントディレクトリは、アプリケーションが変更できますし、起動時も指定できます。Windowsのコマンドプロンプトでcdというコマンドを使うとカレントディレクトリが変更できますが、この変更された状態で適当な階層にある.exeを起動すると、カレントディレクトリは変更されたままです。.exeと同じディレクトリではありません
さて、現在のカレントディレクトリーを表示することを考えてみましょう。WindowsAPIを用いて
と書けます。これを実行して表示されたものがカレントディレクトリのパスと言うことになります。ご確認下さい。この表示されたパスもご期待通りだったらファイル名を疑って下さい。(うまくいかなければマルチバイトモードでビルドして下さい……)
そして、systemはそのアプリケーションが終了するまで待機します。従って、systemが戻り値を返したときは、その問題のアプリケーションが正常・異常にかかわらず終了したことを意味しています。問題はそのアプリケーションにあるかもしれません。
以上をまとめると、
1. ファイルパスが間違っているかもしれないと思い、確実に合っているだろうと考えられる絶対パス(\とか入っているもの)を指定する。特に、C(やDなどの)ドライブ直下に置いて確かめる。
2. できたらカレントディレクトリが間違っている可能性を疑い、カレントディレクトリを取得・必要なら設定する。(設定はSetCurrentDirectory関数でできます。)
3. カレントディレクトリに適当なテキストファイルなど、確実に開けるものを置き、System関数で開く。(テキストファイルなど拡張子によって関連づけられたアプリケーションが起動します。終了することでメインスレッドに処理が戻ります。)
4. 3までできたらGamePlay.exeをカレントディレクトリに置き、実行してみる。これで一瞬で終了してしまうなど不具合があれば原因はGamePlay.exeにあるため、そちらをなんとかする。
> フルパス指定で¥¥でやったけどできなかった
が文字通り「¥¥」と入力されたように受け取られてしまいます。数字も1234567890といわゆる半角で入力しましょう。スペースも常に半角にしておきましょう。ミスが減ります。或いは、見やすいフォントがたくさんありますのでご検討下さい。「コーディング フォント」などで検索すると出てきます。
> 同じフォルダにあるので/とか¥とか¥¥とか書かの¥なくてもいいと思うのですが
これは難しい問題です。確かにほとんどの場合は同じフォルダにあれば、その実行ファイルと同じフォルダが「作業フォルダ」になります。そのため、同じフォルダにあるファイルを参照する場合は、/とか\とか書かなくても済みます。なお、ご存じとは思いますが、\\と書くのは、C言語では\をエスケープシーケンスとしているからです。詳しくは「エスケープシーケンス C言語」で検索して下さい。
Windowsではフォルダといいますが、以下で述べるような、ハードディスクなどに実在する階層の名前としてはディレクトリと言います。詳しくは「フォルダ ディレクトリ 違い」などで検索して下さい。
カレントディレクトリは、アプリケーションが変更できますし、起動時も指定できます。Windowsのコマンドプロンプトでcdというコマンドを使うとカレントディレクトリが変更できますが、この変更された状態で適当な階層にある.exeを起動すると、カレントディレクトリは変更されたままです。.exeと同じディレクトリではありません
オフトピック
(コマンドプロンプトの例) C:\test\a.exeがあったとします。
cd C:\test
とすると、カレントディレクトリはC:\testになります。ここで
a.exe
と入力すると実行でき、カレントディレクトリはC:\testです。
さて、
cd ..\
とすると親のディレクトリに移ります。このときカレントディレクトリはC:\となります。ここでa.exeとしても実行できないので、test\a.exeとしてあげることで実行できます。このときのカレントディレクトリはC:\のままです!
(ショートカットファイルを作って、作業ディレクトリを指定した例) C:\test\a.exeがあったとします。このexeファイルのショートカット「a.exeへのショートカット」を作りました。このショートカットファイルを右クリックして、プロパティから「作業フォルダー」の部分をC:\とすると、このショートカットから実行したときに、カレントディレクトリが「作業フォルダー」のパスになっています。
cd C:\test
とすると、カレントディレクトリはC:\testになります。ここで
a.exe
と入力すると実行でき、カレントディレクトリはC:\testです。
さて、
cd ..\
とすると親のディレクトリに移ります。このときカレントディレクトリはC:\となります。ここでa.exeとしても実行できないので、test\a.exeとしてあげることで実行できます。このときのカレントディレクトリはC:\のままです!
(ショートカットファイルを作って、作業ディレクトリを指定した例) C:\test\a.exeがあったとします。このexeファイルのショートカット「a.exeへのショートカット」を作りました。このショートカットファイルを右クリックして、プロパティから「作業フォルダー」の部分をC:\とすると、このショートカットから実行したときに、カレントディレクトリが「作業フォルダー」のパスになっています。
#include <stdio.h>
#include <Windows.h>
int main(void) {
CHAR buffer[1024];
GetCurrentDirectory(1024, buffer);
printf("%s;", buffer);
getchar();
}
そして、systemはそのアプリケーションが終了するまで待機します。従って、systemが戻り値を返したときは、その問題のアプリケーションが正常・異常にかかわらず終了したことを意味しています。問題はそのアプリケーションにあるかもしれません。
以上をまとめると、
1. ファイルパスが間違っているかもしれないと思い、確実に合っているだろうと考えられる絶対パス(\とか入っているもの)を指定する。特に、C(やDなどの)ドライブ直下に置いて確かめる。
2. できたらカレントディレクトリが間違っている可能性を疑い、カレントディレクトリを取得・必要なら設定する。(設定はSetCurrentDirectory関数でできます。)
3. カレントディレクトリに適当なテキストファイルなど、確実に開けるものを置き、System関数で開く。(テキストファイルなど拡張子によって関連づけられたアプリケーションが起動します。終了することでメインスレッドに処理が戻ります。)
4. 3までできたらGamePlay.exeをカレントディレクトリに置き、実行してみる。これで一瞬で終了してしまうなど不具合があれば原因はGamePlay.exeにあるため、そちらをなんとかする。
ζ*'ヮ')ζプログラミングはみんなで奏でるシンフォニー
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
ほんとになんでなんだろうログにも何も残らずデバックしても何も残らない。
コード全体は↓(設定処理は抜いてあります)
Con.cpp
main.cpp
とかいう感じです。
なにかわかったら教えてください。
コード全体は↓(設定処理は抜いてあります)
Con.cpp
#include "main.h"
int End;
void Con(){//こんふてぃっくの略です
//略
if(End==2){ //1は反映して終了です。だから2です。
system("GamePlay.exe");
}
}
int ConEnd(){
return End;
}
#include "main.h" //ここに関数など定義が書いてあります。
int WINAPI WinMain( HINSTANCE , HINSTANCE, LPSTR , int nCmdShow ){
ChangeWindowMode( TRUE ) ;
DxLib_Init();
SetDrawScreen( DX_SCREEN_BACK ) ;
// ESCキーが押されるか、ウインドウが閉じられるまでループ
while(ConEnd()==0 && ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ){
// 裏画面の内容を表画面に反映
ScreenFlip() ;
// 画面をクリア
ClearDrawScreen() ;
Con();
}
DxLib_End();
return 0;
}
なにかわかったら教えてください。
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
まずインデントがおかしいですね。
あと、「//略」の部分の処理が間違っていて、Endが2でない可能性が考えられますね。
あと、「こんふてぃっく」という言葉を私もGoogle大先生も知らないのですが、どういう意味ですか?
[search=google]"こんふてぃっく"[/search]
あと、「//略」の部分の処理が間違っていて、Endが2でない可能性が考えられますね。
あと、「こんふてぃっく」という言葉を私もGoogle大先生も知らないのですが、どういう意味ですか?
[search=google]"こんふてぃっく"[/search]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
ごめんなさい 余分に文字などが入ってましたね。打ち間違えです。
コンフィグです。
コンフィグです。
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
「何も残らない」とはどういうことですか?
MessageBoxなどで、system関数(を含むブロックの処理)が実行されていることは確認しましたか?
MessageBoxなどで、system関数(を含むブロックの処理)が実行されていることは確認しましたか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
まさかとは思うけど、「コマンドプロンプト」って開けますか。ハルルン さんが書きました:今やったら
Application "\??\C:\WINDOWS\system32\cmd.exe" found in cache
スレッド 'Win32 スレッド' (0x24) はコード 0 (0x0) で終了しました。
って出ました
(スタートメニュー→アクセサリ→コマンドプロンプトとやって、「コマンドプロンプト」のタイトルをもったウィンドウが開けるかどうか)
system関数は、「コマンドプロンプト」の実体であるcmd.exeを呼び出す関数なので。
開けない(ショートカットのエラーがでるとか)のであれば、標準でついてくるはずのcmd.exeがないということなので、システムが壊れてるかもしれません。
system関数 - C言語関数辞典
あとN.Rさん(No.11)、milfeulleさん(No.12)のコメント見てますか。
無視しているように見えるのですが。
無視していないのであれば、ちゃんと返事を書いてください。
written by へにっくす
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
開けますよ!!!!!!!!!!!!!!!
コマンドプロント使ってるよ!!!!!!!!!!!!!!!
コマンドプロント使ってるよ!!!!!!!!!!!!!!!
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
みけCATさん>>ちゃんと反映して実行や反映して終了の描画したところをクリックすると終了します。
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
よしok として、retの値はどうなりましたか?ハルルン さんが書きました:開けますよ!!!!!!!!!!!!!!!
コマンドプロント使ってるよ!!!!!!!!!!!!!!!
これで0以外が返ってくれば、環境としては問題ないです。
文字コードがUnicodeになってるとかではないですかね。ググってください。
0が返ってくる場合は、環境変数まわりを疑います。
オフトピック
しつこいですがNo.11、No.12をスルーしてるのは意図的ですか?
written by へにっくす
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
文字コードは
Dxの設定の時にやってます。
戻り値は0が来たけど・・・なんでロゴにもデバックにも残らないんだろう・・・
あっあとなんかコマンドプロントのようなウィンド出るようになりました!!!!!!!
Dxの設定の時にやってます。
戻り値は0が来たけど・・・なんでロゴにもデバックにも残らないんだろう・・・
あっあとなんかコマンドプロントのようなウィンド出るようになりました!!!!!!!
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
system関数の利用を諦め、CreateProcess関数を利用するのはどうですか?
ただし、起動したプロセスの終了を待つには別にコードを書く必要があります。
ただし、起動したプロセスの終了を待つには別にコードを書く必要があります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ほにゃらら.eneからほにゃほにゃらら.exeを起動できない
戻り値が0? のretが0なのであれば、cmd.exeが呼び出せていないってことですけど。ハルルン さんが書きました:文字コードは
Dxの設定の時にやってます。
戻り値は0が来たけど・・・なんでロゴにもデバックにも残らないんだろう・・・
あっあとなんかコマンドプロントのようなウィンド出るようになりました!!!!!!!
環境変数はどうなってますか。
オフトピック
私に言うのではなくて、No.11、No.12のレスをしてください。いい気分ではないのは確かです。ハルルン さんが書きました:あと無視しているつもりでは・・・
written by へにっくす