2016-01-13 178 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的批處理文件,我不需要任何參數! –