代码之家  ›  专栏  ›  技术社区  ›  fre0n

从原生C++ DLL重定向STDUT到VisualStudio输出窗口

  •  3
  • fre0n  · 技术社区  · 15 年前

    我有一个C++的Windows应用程序,它调用一个托管C++ DLL,它又调用一个本地C++ DLL。在本机C++代码中似乎有一些性能问题,所以我正在做一些简单的剖析。我想转储分析的结果,以便Visual Studio输出窗口接收分析结果。我想 printf 这样就可以了,但在输出窗口或直接窗口中都不会显示任何内容。我也尝试过 fprintf 但这也不管用。

    1 回复  |  直到 15 年前
        1
  •  7
  •   Jerry Coffin    15 年前

    尝试 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
    
    推荐文章