2016-07-25 109 views
0

我對圖像執行脫機操作將圖像作爲輸入參數並在VTK中處理C++ EXE我無法通過C#將參數傳遞給C++ EXE。程序和回收輸出。 請用一些例子來解釋我如何使用C#.net從命令行調用C++ EXE .net

+0

它應該和任何可執行文件一樣。你爲什麼要專門詢問C++可執行文件?一旦你有一個可執行文件,它與哪一種語言無關,它們的行爲都是一樣的 – KABoissonneault

+0

首先讓我困惑的是DOS/Windows程序只有*一個*字符串作爲參數。 OS/C++運行時解析字符串並將其作爲'argv'字符串數組呈現給'main'。參數分裂僅僅是空白的;雙引號可防止分裂。所以如果你有多個參數,你可以用一個空格連接它們,可能用雙引號括住每個參數。 –

+0

在這種情況下定義「輸出」。你的輸出是什麼?它在哪裏/如何輸出?你怎麼試圖找回它? – EJoshuaS

回答

1

如果你只是說你有一個編譯好的C++程序(我們稱之爲「foo.exe」,路徑存儲在字符串「exe_folder」中),你想用命令行參數(存儲在字符串「exe_params」)從C#,那麼下面應該工作:

string exe_params = "target_image.jpeg HOUGH_TRANSFORM"; // Or whatever params are appropriate. 
string exe_full_path = Path.Combine(exe_folder, "foo.exe"); 
Process proc = System.Diagnostics.Process.Start(exe_full_path, exe_params); 

https://msdn.microsoft.com/en-us/library/h6ak8zt5(v=vs.110).aspx

+0

謝謝Devid,我已經試過你的代碼片段,它成功地工作,但它只是調用exe而不理解我的exe_params。 –

+0

我的exe文件是一個exe_folder文件。但無法調用該圖像文件。 –

+0

意味着我的命令不理解我的第二個參數 –

0

讓我們說,你的可執行文件名爲test.exe的,它是在測試目錄。對我來說,下面將工作:

 Process process = new Process(); 
     ProcessStartInfo startInfo = new ProcessStartInfo(); 
     startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     startInfo.FileName = "cmd.exe"; 
     startInfo.Arguments = "/C cd C:\\..test\\ && test.exe target_image.jpg yourtransformation"; 
     process.StartInfo = startInfo; 
     process.Start(); 

如果您還有其他問題,可以嘗試設置的ProcessStartInfo的working directory