为什么QT应用程序中的最后一个错误始终为零?
SetLastError(23);
qDebug() << "LastError: " << GetLastError();
预期输出:LastError:23
实际输出:LastError:0
我不能谷歌任何关于这个问题。这些功能是否被QT迷住了?
DWORD lastError = GetLastError();
qDebug() << "LastError: " << lastError;
始终在API调用失败后立即获取最后一个错误。干扰qDebug()
和operator<<
的人称自己调用Windows API函数,这可能会也可能不会重置上一个错误。
当您调用运行时库时,它可以调用Win32 API函数,并重置错误值。像这样修复你的代码:
SetLastError(23);
DWORD err = GetLastError();
qDebug() << "LastError: " << err;
这可确保您在运行时调用Win32函数之前读取错误值。