_WIN32_WINNT 未定义

_WIN32_WINNT Not defined

我在使用 winternl.h 时遇到了问题,我当时使用了一些数据类型,并且成功地为 x64 编译了它,没有任何问题。但是我做了一些更改,现在由于某种原因它无法编译,通过调试我发现原因似乎归结为 _WIN32_WINNT 根本没有被定义,这导致 winternl.h 没有定义任何类型。正是这个导致了 PEB 结构

的问题
EXTERN_C PEB* NTAPI RtlGetCurrentPeb(VOID);

现在我似乎唯一改变的是删除预编译头文件并创建一个新的 class。两者都没有 _WIN32_WINNT 的定义。我创建了一个全新的项目,复制了导入 winternl.h 的 class 并编译得很好。一切都是一样的,导入、包含和库等。我无法理解我所做的导致未定义的事情。我花了很长时间检查这两个项目,但找不到问题的原因。

如果需要,我可以将代码上传到 pastebin,但是因为两个 classes 在每个项目中都是相同的,我不认为这应该有所作为。我想我一定是在项目设置中弄乱了某些东西,但我不知道那可能是什么

_WIN32_WINNT 来自包含文件 <windows.h>,因此为了修复您看到的错误:

在抛出错误的文件中,更改为:

#include <winternl.h>

// ...

对此:

#include <windows.h>
#include <winternl.h>

// ...