我昨天组装了我的新电脑,我决定试试 Windows 8。然而,今天,在调试适度的 Qt 应用程序期间,调试器在一个非常简单的行上产生了“无效的绑定句柄”错误消息(这是由 Qt 的 moc.exe 自动生成的行:
// QWebView *view (...)
view->setUrl(QUrl(QString::fromUtf8("about:blank")));
// Failing in setUrl call, not in QUrl constructor, or in fromUtf8 function.
但是,在 Release 和 Debug 版本中,在没有调试器的情况下运行此应用程序就可以正常工作。
我在互联网上找到了一些启用终端服务的线索,但似乎 Windows 8 中没有这样的服务。
有人知道我应该检查什么吗?
编辑
将小部件移动到其他应用程序不会产生任何错误,因此显然,小部件(非常小 - 只是QWebView
和QProgressBar
)很好。但是,当我在我的主要功能中显示这个小部件时:
QApplication app(argc, argv);
MyWidget w;
w.show();
return app.exec();
它仍然失败并出现相同的错误。检查调用堆栈(当出现错误时这不是很有帮助)并进入函数调用,我已经将错误跟踪到retval = HeapFree(_crtheap, 0, pBlock);
in function _free_base
, in filefree.c
而且似乎函数是从dbgdel.cpp
函数调用的,_free_dbg( pUserData, pHead->nBlockUse );
它是从unlock()
函数调用的。
将调试器附加到已经活动的进程仍然会产生相同的错误。
我在这里链接了很多 3rd 方库,所以我会尝试不使用它们,因为我的想法已经用完了......
编辑2:
如果我将此异常传递给程序,它似乎运行良好。
编辑 3
评论 setUrl 行在某处引发了相同的异常QWebKit
,其中strdup
函数被调用...