如何以编程方式调用C ++编译器?

时间:2009-05-18 14:40:22

标签: c# c++ compiler-construction

出于商业原因,我想创建一个C#应用程序,它将C ++文件/片段作为输入,编译它(可能会调用C ++编译器)并输出编译结果。

你知道怎么做吗?

提前致谢。

7 个答案:

答案 0 :(得分:4)

使用CL.exe

答案 1 :(得分:2)

查看Process课程。

它提供了启动外部应用程序所需的所有功能,包括编译器。

现在,根据您选择的编译器,您需要仔细指定进程的起始参数,以便以可预测的方式进行编译。

答案 2 :(得分:1)

大多数编译器都支持命令行参数。 您只需构建正确的命令并通过shell执行它,如建议here。 车 如果您不想只构建单个文件,而是构建整个.vcproj文件 - 请检查devenv.exe的命令行参数。如果我记得没错,那就是:

devenv.exe /build my.vcproj

答案 3 :(得分:0)

您可以使用Process.Start对任意数量的命令行C ++编译器(如gcc)进行shell。

答案 4 :(得分:0)

您可以通过在命令行上调用任何C ++编译器来完成此操作。我确信编译结果可以重定向,以便您可以在编译完成后抓取它。

答案 5 :(得分:0)

如果您正在尝试为C ++实现类似SnippetCompiler的内容,您可能需要查看一种C / C ++脚本语言。我一直很喜欢CInt

答案 6 :(得分:0)

当然可能,实际上通常的做法是nmake和其他类似make的实用程序一直调用编译器。

OTOH如果您正在考虑将此解决方案部署到客户,您可能会因为设置,文件位置,如何对结果做出反应,许可证,c ++编译器等所有细节而陷入困境部署等。

另一个更简单的选项(IMHO)是代替C ++来直接从C#程序调用C#编译器来编译C#片段。然后,文件可以保留在内存中,在编译之前不需要保存任何文件。网上有很多例子说明了如何做到这一点。此解决方案的另一个优点是您已经拥有C#编译器,因此不需要安装C ++编译器。