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

3
为了业务需要,我想创建一个C#应用程序,它可以将C++文件/片段作为输入,编译它(可能在幕后调用C++编译器),并输出编译结果。您知道怎么做吗?非常感谢。
7个回答

4

2

请查看Process类。

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

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


1

大多数编译器都支持命令行参数。 你只需要构建正确的命令,通过shell执行它,就像这里这里所建议的那样。 如果你不仅想要构建一个单独的文件,而是一个整个的.vcproj文件——检查devenv.exe的命令行参数。如果我记得正确的话,它应该是:

devenv.exe /build my.vcproj

0

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


0
您可以通过在命令行上调用任何C++编译器来实现这一点。我确定编译结果可以重定向,以便您可以在编译完成后获取它。

0

如果你想实现类似于C++的SnippetCompiler,你可能需要看一下其中一个C/C++脚本语言。我一直很喜欢CInt


0

当然可以,这实际上是常见的做法,nmake和其他类似于make的工具一直在调用编译器。

另一方面,如果您考虑将此解决方案部署到客户端,则可能需要遇到一些问题,例如设置详细信息、文件位置、如何处理结果、许可证、部署哪个C++编译器等。

另一个更简单的选择(我认为)是,不使用C++,而是直接从您的C#程序中调用C#编译器来编译C#代码片段。然后文件可以保留在内存中,您无需在编译之前保存任何文件。网络上有许多示例展示了如何实现。此解决方案的另一个优点是,您已经拥有C#编译器,因此无需安装C++编译器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接