【问题标题】:How do I show the console in a c++/CLI application?如何在 c++/CLI 应用程序中显示控制台?
【发布时间】:2020-10-02 23:47:14
【问题描述】:

我正在 VS 2012 中处理 c++/CLI 应用程序分配。出于测试目的,我正在尝试将一些输出打印到控制台(以在构建它们时测试方法),但是此窗口没有控制台窗口表格申请。有没有办法让控制台窗口显示?

或者有人对我如何显示方法输出/结果有建议吗?

谢谢。

编辑 - 我想出了如何让控制台窗口工作。感谢大卫的回复。

【问题讨论】:

    标签: .net testing c++-cli output


    【解决方案1】:

    正如@David 指出的那样,Debug::WriteLine 是跟踪或将状态发送到输出窗口的绝佳方式。

    System::Diagnostics::Debug::WriteLine(L" -- Object State or Tracing");
    

    但是,如果您仍然需要 Windows 应用程序的控制台窗口,请考虑以下事项:

    // Beginning of Application
    #if _DEBUG
        if (::AllocConsole())   // <-- http://msdn.microsoft.com/en-us/library/windows/desktop/ms681952(v=vs.85).aspx
            if (!::AttachConsole(ATTACH_PARENT_PROCESS))  // -1 == ATTACH_PARENT_PROCESS or Process ID
                System::Windows::MessageBox::Show(L"Unable to attach console window", L"Error", System::Windows::MessageBoxButton::OK, System::Windows::MessageBoxImage::Exclamation);
    #endif
    
    // Application End
    #if _DEBUG
        ::FreeConsole();       // <-- http://msdn.microsoft.com/en-us/library/windows/desktop/ms683150(v=vs.85).aspx
    #endif
    

    请注意,这只有在使用调试配置构建时才能看到。

    希望这会有所帮助。

    【讨论】:

    • 啊..谢谢!我对 Debug::WriteLine 的问题是我不熟悉如何调用它。我现在在 MSDN 页面上看到它位于 System::Diagnostics 命名空间中。
    【解决方案2】:

    我建议您使用Debug::WriteLine。当您在调试器中进行测试时,它会写入 Visual Studio 的输出窗口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      相关资源
      最近更新 更多