2012-03-25 174 views
5

我想以編程方式從c#編譯C代碼。我正在嘗試,但我還沒有找到任何解決方案。這是我的代碼。如何以編程方式從使用mingw32-gcc編譯器的c#代碼編譯c代碼

try { 
    var info = new ProcessStartInfo { 
     FileName = "cmd.exe", 
     Arguments = "mingw32-gcc -o a Test.c" 
    }; 
    var process = new Process { StartInfo = info }; 
    bool start = process.Start(); 

    process.WaitForExit(); 
    if (start) { 
     Console.WriteLine("done"); 
    } 
} catch (Exception) { 
    Console.WriteLine("Not done"); 
} 

我使用Windows 7 VS2010和我已經安裝的mingw32-gcc和我的的mingw32-gcc的環境變量是C:\ Program Files文件\代碼塊\ MinGW的\ BIN 任何幫助將不勝感激。提前致謝。

+0

這樣我們就瞭解情況:你有什麼打算與生成的C代碼呢? – 2012-03-25 21:47:04

+1

你的代碼有什麼問題? – usr 2012-03-25 21:47:59

+1

我正在爲我的學期最終項目建立一個基於web的在線評判。所以通常應該有一個選項,contestent可以提交代碼。所以我必須將提交的代碼保存到.c文件中,而不必編譯它並向參賽者提供反饋。 **我已經編譯了Java代碼中的桌面應用程序中的c代碼**但在C#中遇到問題。謝謝 – 2012-03-25 21:51:01

回答

2

調用cmd.exe程序不是必需的。您可以直接使用參數調用mingw32-gcc.exe程序。

編輯:

string szMgwGCCPath = "C:\\mingw32\\bin\\mingw32-gcc.exe"; // Example of location 
string szArguments = " -c main.c -o main.exe"; // Example of arguments 
ProcessStartInfo gccStartInfo = new ProcessStartInfo(szMgwGCCPath , szArguments); 
gccStartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
Process.Start(gccStartInfo); 

問候

+1

用參數直接調用mingw32-gcc.exe並沒有解決我的問題man.Can你可以具體嗎?感謝回覆。問候 – 2012-03-25 21:58:21

+0

@ForhadHussain:你能具體與「沒有解決我的問題」?錯誤,鎖,什麼? Grifos是正確的,你不應該叫「cmd.exe」。 – Abel 2012-03-25 22:00:40

+0

我編輯我的回覆舉例 – grifos 2012-03-25 22:04:25

8

嘗試

Process process = Process.Start(
     @"C:\Program Files\CodeBlocks\MinGW\bin\mingw32-gcc.exe", "-o a Test.c"); 
+0

你解決了我的時間的人。非常感謝。 – 2012-03-25 22:11:56

+0

@YoryeNathan我不會真的叫'mingw32'享受一些東西。 – 2012-03-25 23:16:32

+0

@ ta.speot.is無所謂,他應該得到信貸和謝謝,如果答案幫助OP。 – SimpleVar 2012-03-25 23:34:27