2012-03-25 1 views
5

Я хочу скомпилировать C-код из C# программно. Я пытаюсь, но пока не нашел решения. Вот мой код.Как программно скомпилировать код c из кода C# с помощью компилятора 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"); 
} 

Я использую VS2010 в Windows 7 и я установил mingw32-GCC и моя переменная окружения mingw32-GCC является C: \ Program Files \ CodeBlocks \ MinGW \ Bin Любая помощь будет оценена. Заранее спасибо.

+0

Так что мы понимаем контекст: Что вы собираетесь делать с результирующим кодом C? –

+1

Что не так с вашим кодом? – usr

+1

Я создаю онлайн-судью в Интернете для моего финального проекта семестра. Поэтому обычно должен быть вариант, где участник может подать там код. Поэтому я должен взять предоставленный код и сохранить в файл .c, а не компилировать его и предоставить обратную связь участнику. ** Я скомпилировал код c в настольном приложении в java ** Но столкнулся с проблемой в C#. Спасибо –

ответ

2

Вызов программы cmd.exe не требуется. Вы можете напрямую вызвать программу mingw32-gcc.exe с аргументами.

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

С уважением

+1

Непосредственный вызов mingw32-gcc.exe с аргументами не помог решить мою проблему man.Can вы конкретно? Спасибо за ответ. С уважением –

+0

@ForhadHussain: можете ли вы быть конкретным с "не решить мою проблему"? Ошибки, замки, что? Грифос прав, потому что вы не должны называть «cmd.exe». – Abel

+0

Я отредактировал свой отзыв, чтобы привести пример – grifos

8

Попробуйте

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

Человек вы решили мое время. Большое спасибо. –

+0

@YoryeNathan На самом деле я бы не назвал 'mingw32' чем-нибудь, чтобы наслаждаться. –

+0

@ ta.speot.is Не важно, он должен получить кредит и поблагодарить вас, если ответ помог OP. – SimpleVar

Смежные вопросы