2012-03-25 11 views
5

Ich möchte einen C-Code aus C# programmgesteuert kompilieren. Ich versuche es, aber ich habe noch keine Lösung gefunden. Hier ist mein Code.Wie programmgesteuert kompilieren Sie einen c-Code aus einem C# -Code mit Mingw32-GCC-Compiler

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"); 
} 

Ich verwende VS2010 in Windows 7 und ich habe installiert mingw32-gcc und meine Umgebungsvariable für mingw32-gcc ist C: \ Programme \ Codeblocks \ MinGW \ bin Jede Hilfe geschätzt wird. Danke im Voraus.

+0

Damit wir den Kontext verstehen: Was wollen Sie mit dem resultierenden C-Code zu tun? –

+1

Was ist falsch an deinem Code? – usr

+1

Ich baue einen webbasierten Online-Richter für mein Semester-Abschluss-Projekt. So normalerweise sollte es eine Option geben, wo Contestent dort Code einreichen kann. Also muss ich den eingereichten Code übernehmen und in eine .c-Datei speichern, als sie kompilieren und dem Teilnehmer Feedback geben muss. ** Ich habe einen c-Code in einer Desktop-Anwendung in Java kompilieren ** Aber ein Problem in C#. Danke –

Antwort

2

Der Aufruf des Programms cmd.exe ist nicht erforderlich. Sie können das Programm mingw32-gcc.exe direkt mit Argumenten aufrufen.

Edit:

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); 

Grüße

+1

Der direkte Aufruf von mingw32-gcc.exe mit Argumenten löste mein Problem nicht. Man kann konkret sein? Danke für Ihre Antwort. Grüße –

+0

@ForhadHussain: Kannst du mit "habe mein Problem nicht lösen" konkret sein? Fehler, Sperren, was? Grifos hat recht damit, dass du "cmd.exe" nicht aufrufen solltest. – Abel

+0

Ich habe meine Antwort bearbeitet, um ein Beispiel zu geben – grifos

8

Versuchen

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

Mann du hast meine Zeit gelöst. Danke vielmals. –

+0

@YoryeNathan Ich würde 'mingw32' nicht wirklich etwas zum Genießen nennen. –

+0

@ ta.speot.is Egal, er sollte den Kredit und das Dankeschön bekommen, wenn die Antwort dem OP geholfen hat. – SimpleVar

Verwandte Themen