【发布时间】:2012-02-04 13:40:17
【问题描述】:
我想将 C++ 控制台的输出(printf("") 语句)重定向到 C# 控制台。
以下是我得到的
Process e = new Process();
e.StartInfo.UseShellExecute = false;
e.StartInfo.RedirectStandardOutput = true;
e.StartInfo.FileName = "C:\\Users\\Projects\\ot\\x64\\Debug\\ot.exe";
e.OutputDataReceived += (s, e) => Console.WriteLine(e.Data);
e.Start();
e.BeginOutputReadLine();
但我没有得到任何输出。 C++ 控制台不会使用这些代码行打印任何内容(这意味着输出已被重定向),也不是 C#。
我该如何解决这个问题?
谢谢,
【问题讨论】:
-
OutputDataReceived 上有一个大大的黄色注释,上面写着“正在处理异步输出的应用程序应该调用 WaitForExit() 方法以确保输出缓冲区已被刷新。”
-
感谢雷蒙德的回复。但 WaitForExit() 也一样。实际上我的 C++ 是一个使用 OpenCV 的应用程序。当我使用 OpenCV 相关函数时,只有 printf 语句不会重定向到 C# 控制台。如果我使用,CvCapture* capture = cvCaptureFromCAM(1);在不会重定向到 C# 控制台的 printf 语句之后。