gpt4 book ai didi

c++ - Qt检查当前进程是32位还是64位

转载 作者:太空狗 更新时间:2023-10-29 20:10:49 26 4
gpt4 key购买 nike

我的应用程序有一个 32 位和一个 64 位版本,需要做一些特殊的事情以防它是在 64 位 Windows 上运行的 32 位版本。我想避免特定于平台的调用,而是使用 Qt 或 boost。对于 Qt,我找到了 Q_PROCESSOR_X86_32除了Q_OS_WIN64看来这正是我所需要的。但它不起作用:

#include <QtGlobal>

#ifdef Q_PROCESSOR_X86_64
std::cout << "64 Bit App" << std::endl;
#endif

#ifdef Q_PROCESSOR_X86_32
std::cout << "32 Bit App" << std::endl;
#endif

在我的 64 位 Windows 7 上运行 32 位应用程序时,这没有任何结果。我是否误解了这些全局声明的文档?

由于存在一些混淆:这与检测应用当前运行的操作系统无关,而是检测应用本身的“位数”。

最佳答案

看看QSysInfo::currentCpuArchitecture() : 在 64 位主机上运行时,它将返回一个包含 "64" 的字符串。同样,QSysInfo::buildCpuArchitecture()在 64 位主机上编译时将返回这样的字符串:

bool isHost64Bit() {
static bool h = QSysInfo::currentCpuArchitecture().contains(QLatin1String("64"));
return h;
}
bool isBuild64Bit() {
static bool b = QSysInfo::buildCpuArchitecture().contains(QLatin1String("64"));
return b;
}

那么,你要检测的条件是:

bool is32BuildOn64Host() { return !isBuild64Bit() && isHost64Bit(); }

这应该适用于支持在 64 位主机上运行 32 位代码的所有架构。

关于c++ - Qt检查当前进程是32位还是64位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36649393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com