2016-01-13 175 views
-1

我想在C#(。NET)中制作一个应用程序,例如一个richtextbox,您可以在其中编写C++代码和一个用于调试和运行用richtextbox编写的应用程序的按钮!怎么做 ?我如何将C++编译器(例如G++ 5.3.0 C++0X ENABLED)集成到我的应用程序中来运行它?我知道,对于网站可以使用Ideone Api!我可以从MinGW/bin获得编译器!如何将C++编译器集成到C#应用程序中?

+4

[Google](https://www.google.co.in/)是否已关闭? –

+0

@FᴀʀʜᴀɴAɴᴀᴍ我没有找到任何相关的东西:( –

回答

0

使用System.Diagnostics.Process.Start启动C++编译器像任何其他外部进程:

System.Diagnostics.Process pProcess = new System.Diagnostics.Process(); 
pProcess.StartInfo.FileName = @"path\to\gcc"; 
pProcess.StartInfo.Arguments = "-Wall myFile.cpp"; //argument 
pProcess.StartInfo.UseShellExecute = false; 
pProcess.StartInfo.RedirectStandardOutput = true; 
pProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
pProcess.StartInfo.CreateNoWindow = true; //not diplay a windows 
pProcess.Start(); 
string output = pProcess.StandardOutput.ReadToEnd(); //The output result 
int exitCode = pProcess.WaitForExit(); 

然后分析输出/退出代码,看看是否有任何错误。

调试器会有更多麻烦(例如gdb--因为它具有完整的命令行界面),您可以使用类标准输入属性Process来发送命令,但它会相当复杂。正如你所看到的.Net lib to control remote GDB这里还没有图书馆。

+0

所以我得到这个错误:'附加信息:访问被拒绝!!与编译器的文件夹是只读的我不能改变!我做了编译器全局的路径(我添加了环境设置,系统路径的路径),并在cmd中工作!怎么办? –

+0

如果它被添加到路径中,您可以使用名称'gcc'而不是完整路径。程序通常是只读的 - 这不是一个问题,但运行你的程序的用户可能有限制访问该目录,有趣的... – csharpfolk

+0

现在的作品!我做了一个名为'start.bat'的argumets的批处理文件,我不需要任何参数! –