c++ - Qt Creator - 代码正在运行,但我从 IDE 收到一条错误消息

标签 c++ c qt ide qt-creator

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

Cannot obtain a handle to the inferior: The parameter is incorrect.

当我删除 makefile 和 debug/release 文件夹时,它正在运行,但一段时间后我仍然收到错误。虽然这不是什么大问题,代码运行并且一切正常,但是弹出此错误并且非常烦人。

.pro文件的内容是:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
QMAKE_CC = gcc -std=c99
SOURCES += main.c

提前致谢!


编辑:我已经添加了 C++ 标记,因为这个错误也会发生在 C++ 控制台应用程序中,就像我的情况一样。

最佳答案

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

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

当“劣质”进程(您的应用程序)在整个通信处理完毕之前完成执行时,就会出现问题。 ConsoleProcess::readStubOutput()尝试使用 OpenProcess()在具有关闭句柄的不存在的进程上。 OpenProcess()失败因此错误“无法获得下级的句柄:参数不正确。”。整个错误都没有得到非常温和的处理(嗯,现在怎么办?)... :-/

解决方案: 当您添加一些用户输入操作、暂停、 sleep 、延迟或只是一些循环时,您的应用程序的执行时间稍长,错误就会消失。 ConsoleProcess::readStubOutput()时间充足在您的应用程序退出之前执行 OpenProcess()。因此,作为一种解决方法,我建议在错误修复之前这样做。

关于c++ - Qt Creator - 代码正在运行,但我从 IDE 收到一条错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21539162/

相关文章:

c++ - 为什么 'std::endl' 在语句 'std::cout << std::endl;"中使用时需要命名空间限定,给定参数相关查找?

c++ - Boost.Qi 规则与 skipper 不匹配 '.' 字符

lua - xmake总是报: error: cannot get program for cxx, 为什么?

c++ - 从 Mac 卸载 Qt Creator 2

c++ - 将 QByteArray 读取和写入 QDataSteam

c++函数参数char指针和字符串

c - 在函数内部定义外部变量

c - 无法从函数返回字符串

c - 为什么 BSS 中静态数组的第二个循环比第一个更快?

c++ - 在 Qt 5.9 中使 QToolButton 显示菜单在顶部