【发布时间】:2010-06-15 08:13:58
【问题描述】:
我使用这种方法在 VS 中编译 C++ 文件。但即使我提供了正确的文件,它也会返回 false。谁能帮我... 这是一个名为 CL 的类
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)
{
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;
}
}
这是我的按钮点击事件
private void button1_Click(object sender, EventArgs e)
{
string content = "#include <stdio.h>\nmain(){\nprintf(\"Hello world\");\n}\n";
string errors = "";
CL k = new CL(new string[] { });
if (k.Compile(content, ref errors))
Console.WriteLine("Success!");
else
MessageBox.Show("Errors are : ", errors);
}
【问题讨论】:
-
您收到了哪些错误消息?
-
这看起来非常像 C# 代码 - 当问题标记为 C# 时,为什么您的问题文本会询问 C++?
-
在消息框中显示为“致命错误 c1510:无法加载语言资源 clui.dll”
-
代码是 C# 但他想用它编译 C++ 文件。这正是问题所要问的。
-
如果不是环境那么我没有什么好主意。您可以尝试将 cl.exe 的完整路径放入其中,而不仅仅是 cl.exe 以查看这是否有任何区别 - 可能是它使用 arg[0] 来尝试定位 clui.dll,尽管仍然应该设置如果通过路径执行,则正确。
标签: c# c++ visual-studio compilation