如何查看从 Matlab 中的 Mex 函数使用的 DLL 调用的 printf 的输出?

How can I see the output from printf's that are called from a DLL used by a Mex function in Matlab?

本文关键字:DLL 调用 printf 输出 何查看 Matlab 中的 函数 Mex      更新时间:2023-10-16

我有一些从DLL调用函数的MEX代码。DLL中散布着一堆printf语句,这些语句对调试非常有用。但是,我无法在MATLAB命令窗口中看到它们的输出。我做了一些阅读,显然这是因为命令窗口不被视为可以发送printf输出的控制台应用程序。我试过使用这个链接的解决方案,但无济于事。我可以访问DLL的源代码。我正在Visual Studio 2010中编译Windows 7。我试过使用cout,这是有效的;但是,我不想重写所有的函数来使用cout。我可以做些什么来重定向printf的输出到MATLAB的命令窗口?

您需要在 DLL加载并初始化其运行时库之前调用SetStdHandle 。您可以附加管道的写端,并从另一端读取。

一旦运行时库初始化,它将拥有与原始标准输出句柄绑定的全局数据,并且可能不会受到将来调用SetStdHandle的影响。