Как мне вызвать C ++ компилятор программно? - PullRequest
3 голосов
/ 18 мая 2009

По деловым причинам я хочу создать приложение C #, которое будет принимать файл / фрагмент кода C ++ в качестве входных данных, компилировать их (возможно, вызывая компилятор C ++ под капотом) и выводить результаты компиляции.

Вы знаете, как это можно сделать?

Заранее спасибо.

Ответы [ 7 ]

4 голосов
/ 18 мая 2009

Использование CL.exe

2 голосов
/ 18 мая 2009

Посмотрите на класс Process.

Предоставляет все функции, необходимые для запуска внешнего приложения, включая компилятор.

Теперь, в зависимости от выбранного компилятора, вам нужно будет тщательно указать начальные аргументы процесса, чтобы компилировать его предсказуемым образом.

1 голос
/ 18 мая 2009

Большинство компиляторов поддерживают параметры командной строки. Вам просто нужно собрать правильную команду и выполнить ее через оболочку, как рекомендовано здесь . че Если вы хотите создать не один файл, а целый файл .vcproj, проверьте параметры командной строки для devenv.exe. Если я правильно помню, это:

devenv.exe /build my.vcproj
0 голосов
/ 18 мая 2009

Конечно, это возможно, на самом деле это обычная практика nmake, и другие утилиты make-like все время вызывают компилятор.

OTOH, если вы думаете о развертывании этого решения для клиента, вы можете столкнуться с некоторыми сложностями, такими как настройки, расположение файлов, как реагировать на результат, лицензия, какой компилятор c ++ развернуть и т. д.

Другой вариант, который намного проще (IMHO), это вместо C ++ вызывать компилятор C # непосредственно из вашей программы C # для компиляции фрагмента C #. Файлы могут остаться в памяти, и вам не нужно сохранять какие-либо файлы перед компиляцией. В Интернете есть множество примеров, которые показывают, как это сделать. Еще одним преимуществом этого решения является то, что у вас уже есть компилятор C #, поэтому нет необходимости также устанавливать компилятор C ++.

0 голосов
/ 18 мая 2009

Если вы пытаетесь достичь чего-то вроде SnippetCompiler для C ++, вы можете обратиться к одному из языков сценариев C / C ++. Мне всегда нравились CInt .

0 голосов
/ 18 мая 2009

Вы можете сделать это, вызвав любой компилятор C ++ из командной строки. Я уверен, что результаты компиляции можно перенаправить, чтобы вы могли получить их после завершения компиляции.

0 голосов
/ 18 мая 2009

Вы можете использовать любое число компиляторов C ++ из командной строки (например, gcc), используя Process.Start.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...