我是编程的初学者。那么请告诉我如何为compile()方法传递值。
class CL
{
private const string clexe = @"cl.exe";
private const string exe = "Test.exe", file = "test.cpp";
private string args;
public CL(String[] args)
{
this.args = String.Join(" ", args);
this.args += (args.Length > 0 ? " " : "") + "/Fe" + exe + " " + file;
}
public Boolean Compile(String content, ref string errors)
{
//remove any old copies
if (File.Exists(exe))
File.Delete(exe);
if (File.Exists(file))
File.Delete(file);
File.WriteAllText(file, content);
Process proc = new Process();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.FileName = clexe;
proc.StartInfo.Arguments = this.args;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
//errors += proc.StandardError.ReadToEnd();
errors += proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
bool success = File.Exists(exe);
return success;
}
}
答案 0 :(得分:1)
public Boolean Compile(String content, ref string errors)
你想知道怎么称呼吗?试试。 。
string content = "#include <stdio.h>\nmain(){\nprintf(\"Hello world\");\n}\n";
string errors = "";
CL k = new CL(new string[2] {"/Od", "/C"});
if(k.Compile(content, ref errors))
Console.WriteLine("Success!");
else
Console.WriteLine("Failure: {0}", errors);
希望这有帮助
答案 1 :(得分:1)
使用设计器创建表单,添加文本框名称txtCplusplus和一个按钮。为按钮添加点击事件。
将CL类粘贴到与事件处理程序相同的文件中(form.cs或任何你称之为的文件),而不是在方法或属性中。
在按钮单击事件处理程序中输入以下代码:
CL cmp = New CL(); string errs; if (cmp.Compile(txtCplusplus.Text, ref errs) { MessageBox.Show("Success"); } else { MessageBox.Show(errs); }