CreateProcess の引数について – プログラミング – Home

CreateProcess の引数につ...
 
通知
すべてクリア

[解決済] CreateProcess の引数について


ふりー
 ふりー
(@ふりー)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

こんばんは。

外部アプリケーションのコマンドプロンプトを起動させてコンパイル後、Windowsアプリケーシ
ョンを表示させたいのですが、できなくて困ってます。。。

環境はvisual studio .netでC++で記述しています。

バッチファイルを適用するところまでは、以下のような形でできます。

if ( !CreateProcess( NULL,
_T(cmd.exe /k \C:\\…\\vcvars32.bat\"),
第3引数,4,5,6.....){
                      //以下、失敗処理
}

その後のコンパイルするファイル(A.cpp)をどうにかして引数として渡したいのですが、以下の
方法ではうまくいきません。

×:cmd.exe /k \C:\\…\\vcvars32.bat\ cl \C:\\...A.cpp\ user32.lib

他にも上記と似たような方法を試したのですが、どれも失敗です。
もうコマンドプロンプトに手書きでファイルを記述するしか方法が思いつきません。
どうしたらいいでしょうか?
どなたかご助力お願いします。


引用未解決
トピックタグ
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

そもそもフツーにコマンドラインから手打ちで
cmd /k vcvars32.bat cl ...
って入力してもコンパイラは起動しないのだし、無理っす。
別の方法を考えるほうが吉。

vcvars32.bat なんざ中身は set しかしてないんだから、単純に読み取って
適切に putenv するだけでしょ。
# と、無責任なことを言ってみるテスト


返信引用
Kerry
 Kerry
(@Kerry)
ゲスト
結合: 20年前
投稿: 192
 

バッチファイル(またはメイクファイル)をテンポラリファイルに出力して、
それを実行するという方法はいかがですか?


返信引用
s
 s
(@s)
ゲスト
結合: 21年前
投稿: 10
 

難しくバッチファイルなんて考えず
単純にCreateProcessで起動したcmd.exeに対し、コマンドライン
そのものを送ればよいのでは?
パイプで読み書きでできると思います。
手打ちで動くなら同じことが出来るはずです。


返信引用
通りすがり
 通りすがり
(@通りすがり)
ゲスト
結合: 24年前
投稿: 92
 

一つのコマンドプロンプトに複数のコマンドラインを実行させたいのならバッチファイ
ルかパイプでしょうね。
パイプのほうが汎用性はありますし、余分なファイルは要りませんが、パイプに関し
て調べる必要があります。
それが嫌ならバッチファイルを作ってそれを実行するぐらいですかね。

putenvするとなるとテキストファイル読み取る処理が要るので無駄に面倒だと思
います。
まぁそれも、いい練習になりそうですけどね。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

実行させるだけでいいなら、「ShellExecute」でいいと思います。
まず、
  1.「vcvars32.bat」を起動する。
  2. コンパイル手順を記述したバッチファイルを実行する。
  3. エラーがなければ、プログラム実行。
でどうでしょうか。
  


返信引用
通りすがり
 通りすがり
(@通りすがり)
ゲスト
結合: 24年前
投稿: 92
 

>実行させるだけでいいなら、「ShellExecute」でいいと思います。
それですと、vcvars32.batを実行したプロセスとコンパイルに使うプロセスが違った
りしそうですが、そうすると環境変数って引き継がれないような気がします。
どうでしたっけ?
それと、バッチファイルでやるならそっちでvcvars32.bat実行すればいいだけの話
です。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

>それですと、vcvars32.batを実行したプロセスとコンパイルに使うプロセスが違った
>りしそうですが、そうすると環境変数って引き継がれないような気がします。
そうですね。
「ShellExecute」を使う時は、vcvars32.batを実行した後続けてコンパイルも
行わないと駄目ですね。


返信引用
ふりー
 ふりー
(@ふりー)
ゲスト
結合: 18年前
投稿: 2
Topic starter  

二日間、音沙汰なくて申し訳ありません。
まずパイプの勉強から始めていろいろと頑張っていたのですが、なかなかうまくいかなくて、次
に「ShellExecute」とバッチファイルを用いて試行錯誤した結果、プログラムを起動すること
に成功しました。
様々な助言をしてくれた方々に心から感謝します。とても多くのことを学べました。
本当にありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました