私は(コマンドラインから実行する)C++プログラムを作成しました。これは問題なく動作します。今私はC#アプリケーションのためにそれを使用する必要があります。つまり、C#アプリケーションの出力を呼び出すたびに、そのC#アプリケーションの出力を使用することができます。C#アプリケーション内のコマンドラインプログラムを使用する
可能ですか?もしそうなら、どうですか?
いずれかのリンクやヘルプをいただければ幸いです。
私は(コマンドラインから実行する)C++プログラムを作成しました。これは問題なく動作します。今私はC#アプリケーションのためにそれを使用する必要があります。つまり、C#アプリケーションの出力を呼び出すたびに、そのC#アプリケーションの出力を使用することができます。C#アプリケーション内のコマンドラインプログラムを使用する
可能ですか?もしそうなら、どうですか?
いずれかのリンクやヘルプをいただければ幸いです。
System.Diagnostics.Process
を使用してC++プログラムを起動し、C#アプリケーションで使用するためにその出力をストリームにリダイレクトすることができます。 this question内の情報は、仕様を詳細:
string command = "arg1 arg2 arg3"; // command line args
string exec = "filename.exe"; // executable name
string retMessage = String.Empty;
ProcessStartInfo startInfo = new ProcessStartInfo();
Process p = new Process();
startInfo.CreateNoWindow = true;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardInput = true;
startInfo.UseShellExecute = false;
startInfo.Arguments = command;
startInfo.FileName = exec;
p.StartInfo = startInfo;
p.Start();
using (StreamReader output = p.StandardOutput)
{
retMessage = output.ReadToEnd();
}
p.WaitForExit();
return retMessage;
C++コードDLLを作成し、pinvokeを使用してC#コードからC++関数を呼び出します。
この記事を読む:これを行うにはCalling Win32 DLLs in C# with P/Invoke
もう一つの方法は、.NETからProcessクラスを使用することです。 Processを使用すると、C++コードDLLを作成する必要はありません。 C#コードからプロセスとしてC++ EXEを起動することができます。
あなたがC++プログラムがファイルへの出力のwrite持っており、あなたのC#のプログラムは、ファイルから読み取る可能性があります。
アプリケーションのパフォーマンスが非常に重要な場合は、これが最善の方法ではありません。
try
{
Process p = StartProcess(ExecutableFileName);
p.Start();
p.WaitForExit();
}
catch
{
Log("The program failed to execute.");
}
は今、あなたはあなたのC++のプログラムからファイルへの書き込み、およびあなたのC#のプログラムでそれから読み取るために残されています。ここでは
は、C++プログラムを実行するためのC#コードです。それはそうので http://msdn.microsoft.com/en-us/library/ezwyzy7b.aspx
:これはあなたのC#のプログラムでファイルから読み取る方法を紹介します http://www.cplusplus.com/doc/tutorial/files/
:
これは、プログラム++あなたのCからファイルに書き込む方法を紹介しますOPはそれ以上のコメントを残さなかった、私は不思議に残っている、十分ではない?私はそれがと呼ばれるときはいつも ""の "それ"であるオブジェクトになると思う。 "it"がC++プログラムを指している場合、Andy Mikulaの答えは最高です。
C:\>myCpluplus.exe | myCsharp.exe
を単にmyCsharp.exe内Console.Inから読み取る:「それは」C#プログラムを参照している場合、私はお勧めします。