2011-03-22 71 views
1

我的進程是GCC.exe,它與我的可執行文件位於同一個文件夾中。 我的目標是在gcc中傳遞一個文件作爲參數並生成編譯後的文件。 爲什麼這不起作用?在gcc中傳遞參數的問題

private void btnc_Click(object sender, EventArgs e) 
     { 
      Process GCC = new Process(); 
      GCC.StartInfo.FileName = "gcc.exe" ; 
      GCC.StartInfo.Arguments = this.sourcefile.Text; 
      GCC.Start(); 
      GCC.Close(); 

     } 
+0

你能證實gcc.exe實際上是啓動嗎?這可能是一個路徑問題。 – captncraig 2011-03-22 21:24:41

+0

它的啓動,但一直說:「沒有這樣的文件或目錄」 – Sadique 2011-03-22 21:29:03

+0

因爲gcc期望文件名作爲參數,而不是源文件? – captncraig 2011-03-22 21:39:02

回答

2

GCC.Start();異步啓動一個進程,而GCC.Close();殺死它。所以,跳過Close()

+0

異步進程在完成時是否會自行終止? – invalidsyntax 2011-03-22 21:19:41

+1

@ user667389'this.sourcefile.Text'怎麼樣?參數的大小有限制。它不能超過2047個字符。 – 2011-03-22 21:24:16

+0

@invalidsyntax是。如果孩子處理完成,它會消失。 – 2011-03-22 21:25:01

3

在關閉它之前,您並不等待該過程結束。 Try:GCC.WaitForExit()

+0

它不起作用 – Sadique 2011-03-22 21:19:50

+0

這非常含糊。究竟發生了什麼? – captncraig 2011-03-22 21:21:00

+1

這是一個文件名的朋友。 問題是這樣的: 這是this.sourcefile.Text中的路徑: C:\ Users \ abc \ Documents \ Visual Studio 2008 \ Projects \ Compiler \ Compiler \ bin \ Debug \ my.c但是路徑是在運行時被截斷爲「C:\ Users \ abc \ Documents \ Visual」....怎麼辦? – Sadique 2011-03-22 21:49:03