2016-07-25 84 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