Visual Studio cout/print 无法在输出窗口打印信息的问题

本文阅读 1 分钟
首页 应用开发 正文

出现问题

使用std::cout和print都无法在调试程序的时候打印日志到输出窗口

解决方案

配置工程

在工程属性的对应位置添加 editbin /SUBSYSTEM:CONSOLE $(OUTDIR)\$(ProjectName).exe 即可,如下图所示。
lv5zjtlf.png

代码编辑

使用OutputDebugString封装一个函数

#ifdef _UNICODE
void output(const wchar_t* strOutputString, ...)
{
    wchar_t strBuffer[4096] = { 0 };
    va_list vlArgs;
    va_start(vlArgs, strOutputString);

    _vsnwprintf_s(strBuffer, _countof(strBuffer), _TRUNCATE, strOutputString, vlArgs);
    va_end(vlArgs);
    OutputDebugString(strBuffer);
}
#else
void output(const char* strOutputString, ...)
{
    char strBuffer[4096] = { 0 };
    va_list vlArgs;
    va_start(vlArgs, strOutputString);

    _vsnprintf_s(strBuffer, _countof(strBuffer), _TRUNCATE, strOutputString, vlArgs);
    va_end(vlArgs);
    OutputDebugString(strBuffer);
}
#endif

output(TEXT()"www.fengmu.com"));

或使用代码分配一个控制台窗口并重定向输出信息

    //// 检查是否有其他线程已经附加到控制台
    if (AttachConsole(ATTACH_PARENT_PROCESS) == FALSE) {
        // 如果没有,分配一个新的控制台窗口
        AllocConsole();
        freopen("CONOUT$", "w", stdout);
        setbuf(stdout, NULL);
    }

最终效果

lv5zz6v8.png

lv5zntqi.png

本文来自投稿,不代表本站立场,如若转载,请注明出处:
Webview2
« 上一篇 04-18
常见程序入口特征
下一篇 » 10-02