Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# p调用非托管DLL时获取标准输出?_C#_Pinvoke_Stdout - Fatal编程技术网

C# p调用非托管DLL时获取标准输出?

C# p调用非托管DLL时获取标准输出?,c#,pinvoke,stdout,C#,Pinvoke,Stdout,我有一个非托管DLL,它正在将日志消息写入标准输出。我正在使用WPF应用程序中的P-invokes调用此DLL,我需要获取标准输出流日志。我尝试过Console.SetOut,但这似乎只捕获使用Console.Write等编写的信息 有人有什么想法吗?我在其他地方找到了问题,但他们没有答案。既然你已经打电话给PInvoke,我想你不会介意再打一个电话给他。这里有一个类似的线程您是否考虑过编写中间本机DLL来调用此DLL,捕获标准输出,然后通过p/Invoke将所有内容传递回托管?我想这是可能的。

我有一个非托管DLL,它正在将日志消息写入标准输出。我正在使用WPF应用程序中的P-invokes调用此DLL,我需要获取标准输出流日志。我尝试过Console.SetOut,但这似乎只捕获使用Console.Write等编写的信息


有人有什么想法吗?我在其他地方找到了问题,但他们没有答案。

既然你已经打电话给PInvoke,我想你不会介意再打一个电话给他。这里有一个类似的线程

您是否考虑过编写中间本机DLL来调用此DLL,捕获标准输出,然后通过p/Invoke将所有内容传递回托管?我想这是可能的。虽然这真的很烦人,因为我想在数据返回时显示数据,所以需要轮询和额外的包装库。我希望有一个更干净的方法来做这件事。事实上,在我问了这个问题后,我确实发现了这一点,但遗憾的是,这对我来说并不管用。也许这是从MinGW交叉编译的事实不知何故干扰了输出流。我将尝试获取另一个DLL,并查看生成方法是否有任何更改。正在接受。。。结果表明,交叉编译的MinGW.dll的行为不同。我必须让它捕获自己的输出并调用我通过Pinvoke给它的回调。