【问题标题】:How to "WINAPI::GetLastError" in QT application?如何在 QT 应用程序中“WINAPI::GetLastError”?
【发布时间】:2019-07-31 10:06:39
【问题描述】:

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

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

预期输出: 最后错误:23

实际输出: 最后错误:0

我无法通过 Google 搜索有关此问题的任何信息。这些函数是否被 QT 钩住了?

【问题讨论】:

    标签: c++ qt winapi


    【解决方案1】:
    DWORD lastError = GetLastError();
    qDebug() << "LastError: " << lastError;
    

    始终在 API 调用失败后立即获取最后一个错误。介入的qDebug()operator&lt;&lt; 调用自己调用Windows API 函数,这可能会或可能不会重置最后一个错误。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-28
        • 1970-01-01
        • 2010-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-24
        • 2013-02-05
        相关资源
        最近更新 更多