私はコードから小さな実行ファイルを実行しようとしていますが、かなり成功しています。メインディレクトリ(および必要なファイル)に.exeを置くとうまくいきます。しかし、それはすでにいくつかのファイルがあるので、非常に乱雑です。私はShellExecute
とsystem("")
などCreateProcess()
を使用してみましたがプログラム内からexeを実行する
C:\\Users\\Alex\\Desktop\\GSP381 iLab\\GSP381 iLab\\Models\\ModelLoader.exe
:
これは中、私はそれをしたいディレクトリです。私が正確なファイルパスを入力しようとするたびに失敗します。 ./ModelLoader.exe
、ModelLoader.exe
、さらには./Models/ModelLoader.exe
の場合も同じです。
かなり迷惑になりつつあります。私の研究では、system()
は行く方法ではないと言われましたが、これは私にとっては単なる学習体験なので、セキュリティやランタイムに100%関心がありません。私はちょうど今働いているものを手に入れたいです。
編集: 現在、私はすべてをコメントしました。これだけが実行されています。失敗すると、プログラムは実行されますが、実行ファイルは実行されません。実行可能ファイルは100%動作します。それを何度も確認しました。だからそれは問題ではありません。
*「失敗します」* - あなたはエラー(どちらか)を取得しますか、プログラムがクラッシュしますか?また、試した実際のコードを提供してください – UnholySheep
デフォルトでは、 'system()'や 'CreateProcess()'を使って実行されるプログラムは親プログラムのような環境にあります(同じ環境変数、同じ作業ディレクトリなど)。スポーンされたプログラムのニーズに合わせて環境を設定する必要があります。 'system()'では、 'system()'を呼び出す前にそれを行う必要があります。 'CreateProcess()'にはいくつかのオプションがありますが、それらを使う必要があります。また、この質問は実際にはC++ではなくWindowsプログラミングに関する質問です。 – Peter
完全なパスに空白があります。 *コマンドラインを期待する関数*にプロセスパスを渡すときは、プロセスパスを引用する必要があります。 E. 'system()'または 'CreateProcess()'パラメータ 'lpCommandLine'です。プロセスパスを 'ShellExecute()'パラメータ 'lpFile'に渡すと、引用符は必要ありません。 – zett42