Qt Creator - 代码正在运行,但我收到来自IDE的错误消息

cir*_*rus 4 c c++ ide qt qt-creator

一旦我运行我的代码(请注意我只使用C,没有QT和没有C++),我从IDE中的应用程序输出中获得以下消息:

无法获得劣质的句柄:参数不正确.

当我删除makefile和debug/release文件夹时它正在运行,但过了一段时间后我仍然收到错误.这不是一个问题,代码运行,一切都很好,但这个错误弹出,这是非常烦人的.

.pro文件的内容是:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
QMAKE_CC = gcc -std=c99
SOURCES += main.c
Run Code Online (Sandbox Code Playgroud)

提前致谢!


编辑:我添加了C++标记,因为在我的情况下,C++控制台应用程序也会发生此错误.

doc*_*doc 8

我遇到了同样的问题.论坛上的提示和建议是相当无能的,所以我自己调查了问题,我发现它是QtCreator中的一个错误.

有一个叫做脏的小程序qtcreator_process_stub.每当您在IDE中运行程序时,IDE首先运行qtcreator_process_stub并将您的程序名称作为参数传递(在其他一些参数中).qtcreator_process_stub然后将程序作为单独的进程启动并打印其PID(并在Windows上也显示线程ID).信息被打印到管道然后被读取ConsoleProcess::readStubOutput(),这是Utils.dllQtCreator使用的库的一部分.

当"劣质"进程(您的应用程序)在处理完整个通信之前完成执行时,会发生此问题.ConsoleProcess::readStubOutput()尝试OpenProcess()在具有闭合句柄的不存在进程上使用.OpenProcess()失败因此错误"无法获得劣质的句柄:参数不正确.".整个错误不是很温和处理(嗯,现在是什么?)...: - /

解决方案: 当您添加一些用户输入操作,暂停,睡眠,延迟或只是一些循环时,应用程序的执行时间会更长,错误消失.在您的应用程序退出之前,有足够的时间ConsoleProcess::readStubOutput()执行OpenProcess().所以作为一个workaroud我建议这样做,直到修复bug.