gpt4 book ai didi

c# - 如何从 C# 动态编译 C/C++ 文件

转载 作者:行者123 更新时间:2023-11-30 04:52:20 26 4
gpt4 key购买 nike

我想从 C# 代码动态编译 C/C++ 文件。

例如我有一个c++文件(test.cpp)

#include <iostream>
using namespace std;
void main()
{
cout << "Hello, world, from Visual C++!" << endl;
}

这是我要编译 *.cpp 文件的 C# 代码。

class Program
{
static void Main(string[] args)
{
var start = new ProcessStartInfo();

start.FileName = @"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64\cl.exe";
start.Arguments = @" /EHsc D:\test\test.cpp /out:D:\test\test.exe";

start.UseShellExecute = false;
start.RedirectStandardOutput = true;

string StandardOutput = "";

using (var process = Process.Start(start))
{
// Could be useful to eventually track error
using (var reader = process?.StandardOutput)
{
StandardOutput += reader?.ReadToEnd();
}
}

Console.WriteLine(StandardOutput);
}
}

执行代码时出现以下错误。

Microsoft (R) C/C++ 优化编译器版本 19.16.27026.1 for x64版权所有 (C) Microsoft Corporation。保留所有权利。

cl:命令行警告 D9035:选项“o”已被弃用,将在未来版本中删除测试.cppD:\test\test.cpp(1): fatal error C1034: iostream: 没有包含路径集

enter image description here

最佳答案

尝试先运行

 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat

同时执行两个脚本,你可以使用下面的方法

Process.Start("cmd.exe", "/c \"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat\"\n\"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64\cl.exe\" /EHsc D:\test\test.cpp /out:D:\test\test.exe");

更多信息:Check This

关于c# - 如何从 C# 动态编译 C/C++ 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54462936/

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