将stdout重定向到Visual Studio输出窗口,来自本地c++ dll。

3
我有一个C# Windows应用程序,调用了一个托管的C++ DLL,该DLL又调用了一个本地的C++ DLL。本地的C++代码似乎存在一些性能问题,因此我正在进行一些简单的性能分析。我想将性能分析结果转储出来,以便Visual Studio输出窗口可以捕获它。我认为printf会起作用,但是在输出窗口或立即窗口中都没有显示任何内容。我还尝试了fprintf,但也不起作用。
1个回答

7

尝试使用OutputDebugString

OutputDebugString比较简单,因此我倾向于在我的项目中添加以下内容,使其功能类似于printf(确保避免超过缓冲区大小):

#if (_VERBOSE)
void DebugPrintf (LPTSTR lpFormat, ...)
{
    TCHAR szBuf[1024];
    va_list marker;

    va_start( marker, lpFormat );
    _vstprintf( szBuf, lpFormat, marker );
    OutputDebugString( szBuf );
    va_end( marker );
}
#endif

使用OutputDebugString()的另一个好处是,您可以在DbgView中查看消息,这意味着即使您的应用程序在Release模式下运行而不是在调试器下运行,您也可以查看消息。 - John Dibling

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接