Qt5.14 не может найти заголовок "windows .h"? - PullRequest
0 голосов
/ 28 апреля 2020

Я использую Qt5.14 на Linux Fedora fc31_x86_64. И я читаю книгу Гийома Лазара «Мастеринг Qt5».

Во второй главе я пытаюсь использовать пример из книги для создания кроссплатформенного настольного приложения, которое извлекает количество использованных памятных записок и ЦП. нагрузить. Но когда я пытаюсь включить windows.h в мои проекты, компилятор жалуется, что этот файл не может быть найден?

Так как включить "windows .h" в Qt5 на linux?

Это пример из книги:

// 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; 
} 

1 Ответ

0 голосов
/ 28 апреля 2020

Это было плохо, потому что я спешил скомпилировать программу, прежде чем читать ее целиком. В конце упражнения он использует условную компиляцию, поэтому, если он включен на windows, он использует <windows.h>.

В книге следует упомянуть об этом в начале упражнения или сказать, что мы не компилируем выполняйте упражнение прямо сейчас до конца упражнения.

  • Как сказал @MM. Если я закомментирую части, относящиеся к Ma c -Os и Windows, это работает для меня на Linux. Но вся программа является кроссплатформенной, которая использует условную компиляцию для определения ОС, на которой работает Qt, на этапе предварительной компиляции.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...