gpt4 book ai didi

c - MinGW GCC 无法识别 MEMSTATUSEX?

转载 作者:行者123 更新时间:2023-11-30 14:22:20 25 4
gpt4 key购买 nike

我在 Windows 7 上使用 MinGW GCC 编译器。我正在尝试编译包含以下代码的源代码:

MEMORYSTATUSEX mem_stat;
mem_stat.dwLength = sizeof(memstat);
BOOL success = GlobalMemoryStatusEx(mem_stat);
ram_ptr = &(mem_stat->ullAvailPhys);

我相信您可以猜到,此代码只是使用 GlobalMemoryStatusEx 返回的 MEMORYSTATUSEX 结构来获取可用内存。

当我尝试编译时,出现此错误:

error: unknown type name 'MEMORYSTATUSEX'

我查看了 winbase.h(在 MinGW 安装包含文件夹中),猜猜我发现了什么?

#if (_WIN32_WINNT >= 0x0500)
typedef struct _MEMORYSTATUSEX {
DWORD dwLength;
DWORD dwMemoryLoad;
DWORDLONG ullTotalPhys;
DWORDLONG ullAvailPhys;
DWORDLONG ullTotalPageFile;
DWORDLONG ullAvailPageFile;
DWORDLONG ullTotalVirtual;
DWORDLONG ullAvailVirtual;
DWORDLONG ullAvailExtendedVirtual;
} MEMORYSTATUSEX,*LPMEMORYSTATUSEX;
#endif

所以它就在那里。我猜这与预编译器 if/endif 有关,但我不知道如何解决这个问题......

更奇怪的是,如果我使用 MEMORYSTATUS 结构,它工作得很好。

根据 MS 文档,两者具有相同的最低客户端版本要求:

内存状态: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366589%28v=vs.85%29.aspx

内存状态: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366772%28v=vs.85%29.aspx

我需要设置一些编译器标志吗?或者谁有其他解决方案?

预先感谢您的帮助!

最佳答案

在包含 Windows.h 之前,添加:

#define WINVER 0x0500

头文件windef.h说:

/*
* If you need Win32 API features newer the Win95 and WinNT then you must
* define WINVER before including windows.h or any other method of including
* the windef.h header.
*/

然后使用 -std=c++11 标志进行编译,如下所示:

g++ -Wall -std=c++11 -c <yourFile>.cpp -o <yourFile>.o

关于c - MinGW GCC 无法识别 MEMSTATUSEX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13828913/

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