• ベストアンサー

clでのコンパイル結果を取得

clでのコンパイル結果を取得 C#でファイル名と必要なオプションを設定して、ボタンを押すと自動的にファイルをコンパイルしてくれるようなものを作りたいのですが、コンパイルはできたのですが、どこでエラーがでたのかという処理中のデータを表示したいのですが、よくわかりません。ご教授の方、よろしくお願いします。 ちなみにコンパイルするファイルはC言語のファイルです。

質問者が選んだベストアンサー

  • ベストアンサー
  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.1

余計な事ですが、わざわざC#でアプリを作るよりは、普通にmake用のバッチを作った方が早くないですか? それはさておき、ご質問への回答は以下です。 どのように実行しているかが書かれていないと答えようがないのですが推測で。 System.Diagnostics.ProcessStartInfoのArgumentsにDOSコマンドを指定して、 プロセスの起動を System.Diagnostics.Process.Start(System.Diagnostics.ProcessStartInfo) で行っているのであれば、 起動したプロセスの実行結果(標準出力/標準エラー)はSystem.Diagnostics.Processのプロパティに入ります。 clのコンパイルエラーは多分、StandardErrorの方に入ると思うので StandardError.ReadToEnd() を使います。 参考URL(msdn)を参考にしてください。 http://msdn.microsoft.com/ja-jp/library/system.diagnostics.process.standardoutput.aspx C#タブの真ん中辺りに、重要な事柄が書いてあります。 (標準出力/標準エラーは非同期で取得する工夫が必要なのです) ここも参考になると思います。 http://dobon.net/vb/dotnet/process/standardoutput.html

参考URL:
http://msdn.microsoft.com/ja-jp/library/system.diagnostics.process.standardoutput.aspx
whiterozes
質問者

補足

コンパイル方法はバッチファイルを実行してコンパイルしています。(先に書いておくべきでしたねw) 教えていただいたサイトを参考にしながらバッチファイルの出力を取得して表示まではできたのですが、取得した文字を改行をして表示することができませんでした。 //出力時にC#用に文字列の改行コードを修正 String text = e.Data.Replace("\r\n\r\n", "\r\n"); textBox1.AppendText(text);

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • clでコンパイルができません

    C言語初心者です。VistaでMicrosoft Visual C++ 2008 Express Editionを使用しています。ことのあらましは以下の様です。 以前まではスタートメニューからVisual Studio 2008 コマンドプロンプトをひらいてディレクトリを移動しcl ファイル名でコンパイルしていたのですが、ある日突然fatal link error C:\Users\(私の苗字)を開けませんといったような表示が出るようになり、コンパイルができなくなりました。まずcファイルはC:直下のそれ用のフォルダに保存してあるので、なぜ(ユーザー名前)開こうとしているのかわかりませんでした。それからいろいろ調べて保存場所を変えたりいじったりしてはインストールしなおすということを繰り返したのですがうまくいかず、ユーザー名の苗字と名前の間にスペースがあるのが原因と考えてユーザー名変更したところ、Visual Studioからひらいたコマンドプロンプトなのに 「'cl'は、内部コマンドまたは外部コマンド、 捜査可能なプログラムまたはバッチ ファイルとして認識されていません。」 と表示されました。 おそらくいじった時に何か消してはいけないものを消したのではと思っているのですが、どうしたらいいでしょうか…どなたか、どうか教えてください。

  • cl.exeを呼び出して実行する方法について

    C言語初心者です。基本的な質問で申し訳ございません。 自作コンパイルコマンドのためのコーディング内容を考えてますが、 cl.exeを呼び出して実行する方法がわかりません。 自作コンパイルコマンドで処理したい内容としては、 ・コマンド実行時の引数より、以下の指定を可能にしたいと思います。 - 出力ファイル名を指定するためのオプション名(例: -o) - 出力ファイル名 - ソースファイル名を指定するためのオプション名(例: -f) - ソースファイル名 - ソースの中で定義されているサービス(関数名)を指定するための オプション名(例: -s) - ソースの中で定義されているサービス(関数名) コンパイルコマンド実行時にcl.exeを内部的に実行したいと考えておりますが、cl.exeを呼び出して実行するための方法がわかりません。

  • コンパイル結果が違う

    コンパイル結果が違う C言語を勉強中の初心者です。 以下のプログラムをVC++6.0のCL.exeでコンパイルするとうまくいくのですが、VC++2010のCL.exeでコンパイルして実行すると、t2の値が0になってしまいます。 また、VC++2010でコンパイルした方が実行結果も遅いです。 #include <stdio.h> #include <time.h> int main(void) { int i = 1; time_t t1, t2; time(&t1); while(i <= 30000) printf("%d,", i++); time(&t2); printf("\ntime1=%ld time2=%ld\n", t1, t2); printf("かかった時間は、%d秒です\n", t2-t1); return 0; } vc++2010でコンパイルした方のt2の値が、0で表示されてしまうのはなぜでしょうか? よろしく、お願いします。

  • c言語のコンパイルについて教えてください。

    Unixとwindows98を使用しています。 #include<stdio.h> #include<math.h>    (以下 省略)  と、c言語のプログラムをして、コンパイルを、gcc ファイル名.c  と するのでしょうか。 cl ファイル名 -lm   とするのでしょうか。  どうすれば良いか、教えてください。 説明が下手で申し訳ございません。 お答えを待ってます。  

  • C言語初心者です。コマンドプロンプトのコンパイルが出来ません。

    C言語初心者です。コマンドプロンプトのコンパイルが出来ません。 教習所ではVisual studio 2008を用いてたので"cl"で出来たのですが、 自宅のパソコンのコマンドプロンプトでsoccer.cというファイルを作り、コンパイラしても「'cl'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません」というエラーがでてしまいます。 Visual studioではありません。ノートPCに元から入ってた既存のコマンドプロンプトを使ってます。 なのでソフト名は分かりません。使ってるパソコンはwindowsです。 どなたかコンパイルの方法を教えてください!

  • 分割コンパイルのリンク時のファイル名の指定法

     Visual Studioコマンドプロンプト(2010)で、分割コンパイルを試みています。自分で調べて、次のことまでは分かりました。 ソースファイル “1.c” “2.c” “3.c” がある。それぞれ、リンクはせずにコンパイルだけ行うには、 “cl /c 1.c”で、“1.obj”が生成する。 “cl /c 2.c”で、“2.obj”が生成する。 “cl /c 3.c”で、“3.obj”が生成する。 これらを、次のようにリンクすると、 “link 1.obj 2.obj 3.obj” ↓ “1.exe” が生成する。  この最後のリンクのところで、“1.exe”でも“2.exe”でも“3.exe”でもない別のファイル名(“program.exe”など)に、実行ファイルを指定したいのですが、 “link /?” を見てみると、どのオプションを指定すればいいか分かりません。どなたか、ご教授ください。お願い致します。

  • Cのコンパイル

    初歩的なことですいません。 Fedora Core5 のGNOME端末でC言語をコンパイルしようとしているのですが、gcc comand not find と返ってきて、コンパイルできません。ls でファイルは表示されます。gcc ファイル名.c と入力しています。どうすればコンパイルできるか教えてください。

  • コンパイルできない "clは内部コマンド・・・

    独習Cという本を見て Microsoft.NET Framework SDK2.0のインストールとBorland C++ Compiler5.5をインストールして環境変数のPathの変数値の末尾に「;c:\borland\bcc55\Bin」と入力して設定したのですが、コマンドプロンプトでprog.cというファイルを作り、コンパイラすると「clは内部コマンド...」というエラーがでます。 パソコンの環境はvistaを使用し、秀丸エディタでファイルは作りました。 コマンドプロンプトに 「C:\Users\ユーザー名>cl prog.c」としたのですが何か根本的に間違えているのでしょうか?教科書を見る限りこれ以上設定する項目はないのですが。

  • コンパイル

    ubuntuで、 gcc (ファイル名).c とコンパイルをしようとすると、 error: stdio.h: No such file or directory error: math.h: No such file or directory が出てきてしまいます。どうやってコンパイルしたらよいのでしょう?初心者ですのでよろしくお願いします。

  • コンパイルできない

    C言語のプログラムをはじめたばかりの初心者ですが、 "smp1.c"というソースファイルをメモ帳でつくり、コマンドプロンプトで上でコンパイルしようとしたのですが、うまくいきません。 smp1.cファイルの内容は #include <stdio.h> int main(void) { printf("Hello\n"); return 0; } となっています。cworkというディレクトリにすべてのプログラムを保存しています。 コマンドプロンプト上でcworkディレクトリに移動し"C:\cwork>" の後に ”cl smp1.c ” とタイプしてenter を押しても 'cl' is not recognized as an internal or external command, operable program or batch file. と表示されコンパイルできません。 一体どうすればいいでしょうか? 初心者なので説明不足かもしれませんが その際は補足しますので、どうが教えてください.