Поскольку вы уже используете команду system()
в своем вопросе, я предполагаю, что вы согласны со мной, используя ее в моем решении. В этом случае просто используйте команды Batch (CMD) для запуска процесса в текущем окне.
Сначала вам нужно скомпилировать код C#. В этом посте подробно объясняется, как это сделать. Если вы хотите сделать это внутри программы на C ++, просто оберните команду компиляции в команду system()
(например, system("/* path to csc.exe */ \t:exe \out:App.exe App.cs");
).
После этого просто оберните имя исполняемого файла в другой system()
команда (например, system(App.exe)
).
Итак, если бы у меня был скрипт cs с именем "Books.cs", вот как я могу скомпилировать (при необходимости) и запустить из C ++:
// PATH_TO_CSC should be replaced with the path to csc.exe on your machine
int main()
{
system("PATH_TO_CSC \t:exe \out:Books.exe Books.cs");
system(Books.exe);
}
Примечание, чтобы это работало ваш рабочий каталог должен совпадать со сценарием C#. С моей стороны это не проверялось для C# программ, но я смог запустить исполняемое консольное приложение C ++, которое не открывало новое окно. Другой исполняемый файл должен иметь аналогичный результат.