是否可以将标准输出从Visual Studio重定向到输出窗口?
我在我的程序中使用OutputDebugString
,但我使用一些库,这些库具有带有printf或cout的输出调试消息。
发布于 2011-03-10 04:24:46
简单的标准输出重定向将不起作用,因为没有对应于OutputDebugString的句柄。然而,应该有一种方法:
这可以通过将标准输出重定向到管道,然后创建一个线程来读取管道并使用OutputDebugString打印从中读取的任何内容来完成。
注意:我很久以前就在考虑实现这一点,因为我面临着与您完全相同的问题(一些库使用printf或fprintf(stderr...)。然而,我从未真正做到这一点。我总是结束修改库,因此我没有一个有效的实现,但我认为它在原则上应该是可行的。
发布于 2011-03-10 01:01:31
是。我假设您正在开发一个Win32图形用户界面应用程序。
您的C实现为标准输入、标准输出和标准错误定义了三个句柄。Win32定义了等价的句柄,这些句柄定义了实际的物理输入/输出将出现在何处。C函数,如'printf',使用这些Win32句柄来执行I/O。基本上,您必须为输出创建一个控制台,然后重定向Win32标准输出所指向的位置。然后获取C标准输出的句柄,并将其与Win32标准输出相关联。
This link包含有关如何执行此操作的详细信息:
您需要向应用程序中添加两个新文件(链接包含清单)。
https://stackoverflow.com/questions/5248704
复制相似问题