gpt4 book ai didi

c++ - 通过命令行编译C/C++/Visual C程序

转载 作者:行者123 更新时间:2023-11-30 16:37:29 27 4
gpt4 key购买 nike

我用 C# 编写了一个程序 - windows-forms它接收来自 C/C++ 源代码的输入我必须编译并运行它,并根据他的计划向用户显示输出。使用微软的codedom编译类,上网找了好久,没有成功,因为上述C语言的功能没有实现。我创建了一个程序,它打开命令行并向其发送命令,然后读回输出。使用Visual Studio内置的命令行并不成功,因为它在打开后几秒钟后立即关闭,在网上搜索了很长时间也没有找到解决方案。

You can see here my view

And this is the code:

string vcvars32 = @"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat";
string vsdevcmd = @"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat";
string WorkingDirectory = @"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin";
string sourceFilePath = @"E:\C_Sources\sample.c";

private void button1_Click(object sender, EventArgs e)
{
saveToFile(textBox1.Text);//Save the code as c file.
textBox3.Text = runCmd();
}

string runCmd()
{
Process p = new Process();
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = @"cmd.exe";
info.RedirectStandardInput = true;
info.UseShellExecute = false;
info.RedirectStandardOutput = true;
info.CreateNoWindow = true;
p.StartInfo = info;
p.Start();

using (StreamWriter sw = p.StandardInput)
{
if (sw.BaseStream.CanWrite)
{
sw.WriteLine(vsdevcmd );
sw.WriteLine("cd " + WorkingDirectory);
sw.WriteLine(vcvars32);
sw.WriteLine();
sw.Write("cl.exe ");

sw.WriteLine(sourceFilePath);
}
}
using (StreamReader sr = p.StandardOutput)
{
if (sr.BaseStream.CanRead)
{
toolStripStatusLabel1.Text = "Parse completed";

return sr.ReadToEnd();
}
}

p.WaitForExit();
toolStripStatusLabel1.Text = "cannot read output";
return "";
}

有些东西有效,但我收到这样的错误:

fatal error C1034:winsdkver.h:未设置包含路径

虽然我调用“vcvars32.bat”命令来加载所有环境变量。你可以在图片中看到它。

谢谢大家的帮助!!

最佳答案

我正在使用 WIN32 CreateProcess 来实现相同的结果。

0) 始终阅读文档:https://msdn.microsoft.com/en-us/library/fwkeyyhe.aspx

1)winsdkver.h是Windows Sdk中包含的文件。您有WSDK吗?

2) 是否需要暂停cmd执行?在 cl.exe 之后添加一行带有“pause”命令的行。

3) 在 cl.exe 参数字符串中添加一些带有/I 的 include dir 以包含其他 header 。

4) 您还可以创建一个批处理文件:'cl.exe %* > output.txt'这允许您将参数传递给 cl.exe,然后在文本文件中打印结果

关于c++ - 通过命令行编译C/C++/Visual C程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47883993/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com