c++ - Qt5.14 找不到“windows.h”头文件?
问题描述
我在 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在预编译步骤中运行的操作系统。
推荐阅读
- sql-server - 与 SQL Server 建立连接时发生与网络相关或特定于实例的错误
- python-2.7 - Twyton / 命令“python setup.py egg_info”失败,错误代码 1 在 /tmp/pip-install-ui3eeW/twython/
- html - 试图将html表单数据提交到excel
- amazon-web-services - 无服务器 AWS:扩展默认 IAM 角色的权限
- android - 使用带有 Android 导航组件的 Firebase 电子邮件登录链接
- sql - Db2 SQL 根据大量数据选择排除行的行
- php - PHP Quiz 使用数组生成问题。如何计算积分?
- python - 将 pandas .loc 与日期结合使用不同的 datetimeindex
- xml - XSD:正则表达式我不知道为什么它无效
- python-3.x - 嗨,我是 python 3 的新手,希望在列表中计算浮点数,该列表中同时包含浮点数和字符串