为了业务需要,我想创建一个C#应用程序,它可以将C++文件/片段作为输入,编译它(可能在幕后调用C++编译器),并输出编译结果。您知道怎么做吗?非常感谢。
请查看Process
类。
它提供了启动外部应用程序的所有功能,包括编译器。
现在,根据您选择的编译器,您需要仔细指定进程的启动参数,以便以可预测的方式进行编译。
大多数编译器都支持命令行参数。 你只需要构建正确的命令,通过shell执行它,就像这里这里所建议的那样。 如果你不仅想要构建一个单独的文件,而是一个整个的.vcproj文件——检查devenv.exe的命令行参数。如果我记得正确的话,它应该是:
devenv.exe /build my.vcproj
您可以使用Process.Start调用任意数量的命令行C++编译器(如gcc)。
当然可以,这实际上是常见的做法,nmake和其他类似于make的工具一直在调用编译器。
另一方面,如果您考虑将此解决方案部署到客户端,则可能需要遇到一些问题,例如设置详细信息、文件位置、如何处理结果、许可证、部署哪个C++编译器等。
另一个更简单的选择(我认为)是,不使用C++,而是直接从您的C#程序中调用C#编译器来编译C#代码片段。然后文件可以保留在内存中,您无需在编译之前保存任何文件。网络上有许多示例展示了如何实现。此解决方案的另一个优点是,您已经拥有C#编译器,因此无需安装C++编译器。