Вы могли бы попытаться загрузить/установить Тонкую настройку Ubuntu. Существует опция выбрать обои для экрана входа в систему (Тонкие настройки> Настройки Входа в систему). Если Ваше пользовательски выбранное изображение не отображается впоследствии, Вы, возможно, должны к sudo скопировать его в/usr/share/backgrounds каталог, затем щелкнуть правой кнопкой, изменяют полномочия соответствовать обоям по умолчанию.
я надеюсь, что работы как то, что Вы получили в памяти. Всего хорошего.
Возможно использование C #. Взгляните на этот образец проекта из CodeProject.
Извлечение кода
private Assembly BuildAssembly(string code)
{
Microsoft.CSharp.CSharpCodeProvider provider = new CSharpCodeProvider();
ICodeCompiler compiler = provider.CreateCompiler();
CompilerParameters compilerparams = new CompilerParameters();
compilerparams.GenerateExecutable = false;
compilerparams.GenerateInMemory = true;
CompilerResults results = compiler.CompileAssemblyFromSource(compilerparams, code);
if (results.Errors.HasErrors)
{
StringBuilder errors = new StringBuilder("Compiler Errors :\r\n");
foreach (CompilerError error in results.Errors )
{
errors.AppendFormat("Line {0},{1}\t: {2}\n", error.Line, error.Column, error.ErrorText);
}
throw new Exception(errors.ToString());
}
else
{
return results.CompiledAssembly;
}
}
public object ExecuteCode(string code, string namespacename, string classname, string functionname, bool isstatic, params object[] args)
{
object returnval = null;
Assembly asm = BuildAssembly(code);
object instance = null;
Type type = null;
if (isstatic)
{
type = asm.GetType(namespacename + "." + classname);
}
else
{
instance = asm.CreateInstance(namespacename + "." + classname);
type = instance.GetType();
}
MethodInfo method = type.GetMethod(functionname);
returnval = method.Invoke(instance, args);
return returnval;
}
Вы всегда можете сделать это грязным способом, используя system () и вызвав компилятор "gcc ..." или аналогичный
Предложение Ника хорошее, но есть альтернатива, которая, вероятно, проще в реализации (но может не подходить для всех проектов). Если вы можете предположить, что у вашего пользователя установлен компилятор, вы можете сгенерировать файл, а затем скомпилировать его с помощью его компилятора.
.NET-framework предоставляет несколько классов, которые предоставляют вам доступ к компиляторам и генераторам кода для C # и VB.NET, в результате чего либо сборка загружается в память, либо простой .exe-файл. . См. CSharpCodeProvider и в этой статье .
Кроме того, вы можете просто создать исходные файлы и скомпилировать их вручную (вызовы командной строки ( system
) в компилятор, make-файлы).
Относительно перевода вашего источника: вам придется использовать здесь механизмы синтаксического анализа, такие как регулярные выражения, или использовать инструмент компилятора-компилятора, такой как Coco / R, yacc и т.д. ( Обратите внимание, что в C ++ boost :: spirit
также может быть весьма полезным)
В C # вы можете создать дерево .NET "CodeDom", а затем скомпилировать его с помощью компилятора .NET. Это дает вам полный доступ к большинству функций .NET.
См. Пространство имен «System.CodeDom» или справку MSDN для CodeCompileUnit для получения подробной информации.
В C ++ вы не можете использовать компилятор во время выполнения, но вы можете встроить интерпретатор в свой проект, например CINT.