Member 14634484 Ответов: 1

Как построить онлайн-компилятор кода и показать выходные данные для любого языка?


1) здесь я использую "объект codedomprovider" для получения поставщик для кода на C++, т. е. давая "codeProvider объект codedomprovider = объект codedomprovider.CreateProvider("cpp");", и пытается скомпилировать код для результата, но я получаю следующее исключение:

- Исключение типа "система".NotImplementedException' произошло в CppCodeProvider.dll, но не был обработан в пользовательском коде

Дополнительная информация: метод или операция не реализованы."

2) Когда я пытаюсь сделать то же самое с кодом C#, предоставляя провайдеру для C# в "CodeDomProvider" как CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("Csharp");" его компилируют и даже генерируют выходные данные.

3) я использую visual studio 2015, и dll, то есть "CppCodeProvider", отображается в ссылке, и я добавил ссылку также в проект.

4) и "c++,cpp,vb,c#,Jscript" все эти языки отображаются в списке поддерживаемых языков "CodeDomProvider", но он работает только для CSharp, а не для каких-либо других языков.


может ли кто-нибудь сказать мне,как я могу скомпилировать этот код на любом языке программирования(c,c++, java,vb,Jscript или csharp)и получить результат, как у нас есть онлайн-редактор кода с компиляторами?

Что я уже пробовал:

общественного недействительными compile_Click(объект отправителя, EventArgs в электронной)
{
//Очистка списка.............
lstCompilerOutput.Предметы.Четкий();
нажать = кнопку + 1;
string Output = "check102" + click + ".exe";
//ПОСТАВЩИК КОДА
CodeProvider объект codedomprovider = объект codedomprovider.CreateProvider("cpp");
Строковый исходный файл;
if (codeProvider.FileExtension[0] == '.')
{
sourceFile = Ceditor.Через свойство innerText;
}
еще
{
sourceFile = Ceditor.Через свойство innerText;
}
Система.граф CodeDOM.Компилятор.Параметры CompilerParameters = новые параметры CompilerParameters();
parameters.ReferencedAssemblies.Add("System.dll");
параметры.GenerateExecutable = истина;
параметры.OutputAssembly = Выход;
CompilerResults result = codeProvider.CompileAssemblyFromFile(параметры, Ceditor.InnerHtml);//"Ceditor.InnerHtml"-получение исходного кода из Texrarea из браузера
ProcessStartInfo greeterProcess = новый ProcessStartInfo();
greeterProcess.Имя Файла = Вывод;
greeterProcess.RedirectStandardInput = true;
greeterProcess.UseShellExecute = false;
greeterProcess.RedirectStandardOutput = true;
если (результат.Ошибки.Count > 0)
{
// Отображение ошибок компиляции.
lstCompilerOutput.Text = "ошибки, возникшие при построении" +
Вывод + " в " + результат.PathToAssembly + ": \r\n\n";
по каждому элементу (компилятора ошибка CE в результате.Ошибки)
lstCompilerOutput.Предметы.Добавить(ce.ToString() + "\r\n");
}
еще
{
lstCompilerOutput.Текст = "Источник" + вывод + "встроенный" +
результат.PathToAssembly + " без ошибок.";
using (Process exeProcess = процесс.Начало(greeterProcess))
{
строка line = exeProcess.StandardOutput.С readline();
lstCompilerOutput.Предметы.Добавить(строка);
lstCompilerOutput.ForeColor = Цвет.Синий;
lstCompilerOutput.Items.Add("Успех");
//exeProcess.WaitForExit();
}
}
}

1 Ответов

Рейтинг:
0

Richard MacCutchan

Additional information: The method or operation is not implemented."

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


Member 14634484

1) я использую visual studio 2015, и dll, то есть "CppCodeProvider", отображается в ссылке, и я добавил ссылку также в проект.
2) и "c++,cpp,vb,c#,Jscript" все эти языки отображаются в списке поддерживаемых языков "CodeDomProvider", но он работает только для CSharp, а не для каких-либо других языков

Richard MacCutchan

Ну, исключение очень ясно, dll не была построена для включения cpp в качестве поддерживаемого языка.

Видеть Объект codedomprovider.CompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[]) Метод (System.граф CodeDOM.Составитель) | Майкрософт Документы[^] для объяснения этого исключения.

Member 14634484

есть ли какая-либо другая альтернатива для создания онлайн-компилятора для любого языка, подобного тем, которые у нас есть в интернете ?

Richard MacCutchan

Зачем вам нужна альтернатива? Фреймворк CodeDomProvider уже существует, вам просто нужно добавить реализацию для тех языков, которые вы хотите поддерживать.

Member 14634484

Но это не работает. Не могли бы вы, пожалуйста, один создать приложение VS и попытаться запустить мой код, вы получите четкое представление о том, с какой проблемой я сталкиваюсь. Попробуйте запустить как c++, так и CSharp-код. он работает для CSharp, но не для c++

Примечание:- при попытке использовать C# замените cpp на Csharp, а также при запуске кода c++ cpp или c++.

Richard MacCutchan

Я уже объяснял, что вы должны реализовать обработчик cpp в DLL. Она не появится волшебным образом.

Member 14634484

Я более свежая для всего этого.Как я могу это сделать,пожалуйста, объясните мне?

Я уже добавил dll, связанную с этим, в свою ссылку на проект

Richard MacCutchan

Перейдите к документации по адресу Система.граф CodeDOM.Пространство Имен Компилятора | Microsoft Docs[^] и работать через него.

Member 14634484

я уже читал этот документ, но понятия не имел.

Member 14634484

не могли бы вы дать мне ясное решение

Richard MacCutchan

К сожалению, я никогда не использовал эту функцию. Попробуйте поискать онлайн-уроки.

Member 14634484

хорошо в любом случае thx