2012-03-25 168 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