簡體   English   中英

Qt Creator - 代碼正在運行,但我收到來自IDE的錯誤消息

[英]Qt Creator - Code is running but I get an error message from the IDE

一旦我運行我的代碼(請注意我只使用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 ++控制台應用程序也會發生此錯誤。

我遇到了同樣的問題。 論壇上的提示和建議是相當無能的,所以我自己調查了問題,我發現它是QtCreator中的一個錯誤。

有一個叫做qtcreator_process_stub臟小程序。 每當您在IDE中運行程序時,IDE首先運行qtcreator_process_stub並將您的程序名稱作為參數傳遞(在其他一些參數中)。 qtcreator_process_stub然后將程序作為單獨的進程啟動並打印其PID(並在Windows上也是線程id)。 信息將打印到管道,然后由ConsoleProcess::readStubOutput()讀取,它是Utils.dll使用的Utils.dll庫的一部分。

當“劣質”進程(您的應用程序)在處理完整個通信之前完成執行時,會發生此問題。 ConsoleProcess::readStubOutput()嘗試在具有關閉句柄的非現有進程上使用OpenProcess() OpenProcess()失敗因此錯誤“無法獲得劣質的句柄:參數不正確。”。 整個錯誤不是很溫和處理( 嗯,現在是什么? )...: - /

解決方案:當您添加一些用戶輸入操作,暫停,睡眠,延遲或只是一些循環時,應用程序的執行時間會更長,錯誤消失。 在應用程序退出之前, ConsoleProcess::readStubOutput()有足夠的時間執行OpenProcess() 所以作為一個workaroud我建議這樣做,直到修復bug。

在Qt中處理C ++項目時,我反復得到同樣的錯誤。 我能夠通過將我正在使用的一個共享庫(.dll)復制到build文件夾來解決它。

因此,如果您正在使用運行時所需的任何共享外部庫,請確保它們位於builds文件夾中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM