相关疑难解决方法(0)

来自qt creator的应用程序的stdout/cout?

我已经在Windows上学习了一段时间(unix/embedded中的背景),并希望从我的win32 qt GUI应用程序中将stderr/stdout从某处(单元测试/事件记录/调试)转出.这似乎是Windows中的一个高级订单,我发现stackoverflow上的这篇文章解释了原因.

我发现自己想知道为什么qt没有一个简单的机制来执行调试版本的帖子中的一些建议.

这样的设施是否已经存在于qt中,或者我是自己滚动(或找到一个syslog lib)?

qt4 qt-creator

8
推荐指数
1
解决办法
1万
查看次数

Windows 8上的FreeConsole行为

在Windows 8上,我们遇到了FreeConsole的问题.它似乎关闭了stdio句柄,而没有关闭文件流.

这可能是Windows 8的问题,或者可能是我根本不理解Windows控制台/ GUI应用程序子系统执行操作的方式(完全荒谬).

这是怎么回事?

下面的最小例子.使用静态链接的CRT对编译器进行测试:VS2005,VS2013,VS2017.

#include <windows.h>
#include <io.h>
#include <stdio.h>

static void testHandle(FILE* file) {
  HANDLE h = (HANDLE)_get_osfhandle(fileno(file));
  DWORD flags;
  if (!GetHandleInformation(h, &flags)) {
    MessageBoxA(0, "Bogus handle!!", "TITLE", MB_OK);
  }
}

int main(int argc, char** argv)
{
  freopen("NUL", "wb", stdout); // Demonstrate the issue with NUL
  // Leave stderr as it is, to demonstrate the issue with handles
  // to the console device.

  FreeConsole();

  testHandle(stdout);
  testHandle(stderr);
}
Run Code Online (Sandbox Code Playgroud)

visual-studio-2005 msvcrt windows-8

6
推荐指数
2
解决办法
2027
查看次数

标签 统计

msvcrt ×1

qt-creator ×1

qt4 ×1

visual-studio-2005 ×1

windows-8 ×1