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

时间:2014-02-03 22:27:43

标签: c++ c qt ide 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

提前致谢!


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

2 个答案:

答案 0 :(得分:8)

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

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

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

<强>解决方案: 当您添加一些用户输入操作,暂停,睡眠,延迟或只是一些循环时,应用程序的执行时间会更长,错误消失。在您的申请退出之前,{{3}}有足够的时间执行OpenProcess()。因此,作为一个工作区,我建议在修复错误之前这样做。

答案 1 :(得分:1)

在Qt中处理C ++项目时,我反复得到同样的错误。我能够通过将我正在使用的一个共享库(.dll)复制到build文件夹来解决它。

因此,如果您正在使用运行时所需的任何共享外部库,请确保它们位于构建文件夹中。