为什么QT应用程序中的最后一个错误总是零?
SetLastError(23);
qDebug() << "LastError: " << GetLastError();预期输出: LastError: 23
实际输出: LastError: 0
我不能搜索任何关于这个问题的东西。这些函数是由QT挂接的吗?
发布于 2019-03-09 23:51:15
DWORD lastError = GetLastError();
qDebug() << "LastError: " << lastError;总是在API调用失败后立即抓取最后一个错误。这些中间的qDebug()和operator<<调用本身调用Windows API函数,这些函数可能重置也可能不重置最后一个错误。
发布于 2019-03-09 23:53:06
当您调用运行时库时,这反过来可以调用Win32应用程序接口函数,并重置错误值。像这样修复你的代码:
SetLastError(23);
DWORD err = GetLastError();
qDebug() << "LastError: " << err;这可确保在运行库调用Win32函数之前读取错误值。
https://stackoverflow.com/questions/55079057
复制相似问题