如何在QT应用程序中“WINAPI :: GetLastError”?

问题描述 投票:0回答:2

为什么QT应用程序中的最后一个错误始终为零?

SetLastError(23);
qDebug() << "LastError: " << GetLastError();

预期输出:LastError:23

实际输出:LastError:0

我不能谷歌任何关于这个问题。这些功能是否被QT迷住了?

c++ qt winapi
2个回答
4
投票
DWORD lastError = GetLastError();
qDebug() << "LastError: " << lastError;

始终在API调用失败后立即获取最后一个错误。干扰qDebug()operator<<的人称自己调用Windows API函数,这可能会也可能不会重置上一个错误。


2
投票

当您调用运行时库时,它可以调用Win32 API函数,并重置错误值。像这样修复你的代码:

SetLastError(23);
DWORD err = GetLastError();
qDebug() << "LastError: " << err;

这可确保您在运行时调用Win32函数之前读取错误值。

© www.soinside.com 2019 - 2024. All rights reserved.