簡體   English   中英

Qt5.14 找不到“windows.h” header?

[英]Qt5.14 cannot find “windows.h” header?

我在 Linux Fedora fc31_x86_64 上使用 Qt5.14。 我正在閱讀 Guillaume Lazar 的書“Mastering Qt5”。

在第 2 章中,我嘗試使用書中的示例創建一個跨平台的桌面應用程序,該應用程序檢索已使用的內存量和 CPU 負載。 但是當我嘗試在我的項目中包含windows.h時,編譯器會抱怨找不到這個文件?

那么如何在 linux 上的 Qt5 中包含“windows.h”?

這是書中的例子:

// In SysInfo.h
class SysInfo 
{ 
public: 
    SysInfo(); 
    virtual ~SysInfo(); 

    virtual void init() = 0; 
    virtual double cpuLoadAverage() = 0; 
    virtual double memoryUsed() = 0; 
}; 

// In SysInfo.cpp 
#include "SysInfo.h" 

SysInfo::SysInfo() 
{ 
} 

SysInfo::~SysInfo() 
{ 
} 

#include "SysInfoWindowsImpl.h" 
#include <windows.h> 

SysInfoWindowsImpl::SysInfoWindowsImpl() : 
    SysInfo()
{ 
} 

double SysInfoWindowsImpl::memoryUsed() 
{ 
    MEMORYSTATUSEX memoryStatus; 
    memoryStatus.dwLength = sizeof(MEMORYSTATUSEX); 
    GlobalMemoryStatusEx(&memoryStatus); 
    qulonglong memoryPhysicalUsed = 
    memoryStatus.ullTotalPhys - memoryStatus.ullAvailPhys; 
    return (double)memoryPhysicalUsed / 
    (double)memoryStatus.ullTotalPhys * 100.0; 
} 

這是我的錯,因為我在閱讀整個程序之前就匆匆忙忙地編譯了程序。 在練習結束時,他使用條件編譯,所以如果它在 windows 上,它使用<windows.h>

這本書應該在練習開始時提到這一點,或者告訴我們在練習結束之前不要編譯練習。

  • 正如@MM 所說,如果我注釋掉與 Mac-Os 和 Windows 相關的部分,它在 Linux 上對我有用。 但是整個程序是跨平台的,它在預編譯步驟中使用條件編譯來檢測 Qt 運行的操作系統。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM