2016-07-25 3 views
0

イメージをパラメータとして入力として画像を取得し、VTK C++で処理する画像に対してオフライン操作を実行しています。exe C#プログラムを実行し、出力を取得します。 いくつかの例を挙げて私に説明してください複数のパラメータを持つC++ exeをC#.netを使用してコマンドラインから呼び出す方法

+0

実行可能ファイルと同じ方法でなければなりません。 C++実行ファイルについて具体的に質問するのはなぜですか?実行可能ファイルを作成したら、どの言語で作成したものでも問題はありません。すべてが同じように動作します。 – KABoissonneault

+0

最初に混乱させたのは、DOS/Windowsプログラムがパラメータとして*文字列を1つだけ取得することです。 OS/C++ランタイムは文字列を解析し、文字列の 'argv'配列として' main'に提示します。引数の分割は単に空白で行います。二重引用符は分割を防ぎます。したがって、複数のパラメータを持つ場合は、それらの間にスペースを入れて連結します。おそらくそれぞれを二重引用符で囲みます。 –

+0

この場合、「出力」を定義します。あなたの出力は何ですか?どこに出力されますか?どのようにそれを取得しようとしていますか? – EJoshuaS

答えて

1

コンパイルされたC++プログラム( "foo.exe"と呼ばれ、パスが "exe_folder"という文字列に格納されています)を持っていて、 C#のから(文字列「exe_params」に格納されている)コマンドラインパラメータは、次の作業をする必要があります:

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_paramsを理解することなく、exeを呼び出すだけでした。 –

+0

私のexe paramはexe_folderと同じイメージファイルです。しかし、そのイメージファイルを呼び出すことができません。 –

+0

私のコマンドが私の2番目のパラメータを理解していないことを意味する –

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を設定してみてください。

関連する問題