2012-03-25 14 views
5

Voglio compilare un codice C da C# a livello di codice. Sto provando ma non ho ancora trovato nessuna soluzione. Ecco il mio codice.Come compilare a livello di codice un codice c da un codice C# usando il compilatore mingw32-gcc

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

Sto usando VS2010 in Windows 7 e ho installato mingw32-gcc e la mia variabile d'ambiente per mingw32-gcc è C: \ Program Files \ CodeBlocks \ MinGW \ bin Qualsiasi aiuto sarà apprezzato. Grazie in anticipo.

+0

in modo da capire il contesto: Che cosa si intende fare con il codice C risultante? –

+1

Cosa c'è di sbagliato nel tuo codice? – usr

+1

Sto costruendo un giudice online per il mio progetto finale del semestre. Normalmente dovrebbe esserci un'opzione in cui il concorrente può presentare il codice. Quindi devo prendere il codice inviato e salvarlo in un file .c piuttosto che compilarlo e fornire un feedback al concorrente. ** Ho compilato un codice c in un'applicazione desktop in java ** Ma affronta il problema in C#. Grazie –

risposta

2

La chiamata al programma cmd.exe non è necessaria. È possibile chiamare direttamente il programma mingw32-gcc.exe con argomenti.

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

saluti

+1

Chiamare direttamente mingw32-gcc.exe con argomenti non ha risolto il mio problema man. Puoi essere specifico? Grazie per la risposta. Cordiali saluti –

+0

@ForhadHussain: puoi essere specifico con "non ha risolto il mio problema"? Errori, serrature, cosa? Grifos ha ragione nel senso che non dovresti chiamare "cmd.exe". – Abel

+0

Ho modificato la mia risposta per dare un esempio – grifos

8

Prova

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

Uomo hai risolto il mio tempo. Molte grazie. –

+0

@YoryeNathan Non vorrei davvero chiamare 'mingw32' qualcosa per godermi. –

+0

@ ta.speot.is Non importa, dovrebbe ottenere il credito e il grazie se la risposta ha aiutato l'OP. – SimpleVar

Problemi correlati