编译来自 winnt.h、winbase.h 和 excpt.h 的 Windows Mobile 项目的错误

Compile errors from winnt.h, winbase.h, and excpt.h for windows mobile project

本文关键字:Windows Mobile 错误 项目 excpt winbase winnt 编译      更新时间:2023-10-16

我有一个已成功编译的桌面项目,但是在向项目添加新配置以支持Windows Mobile平台后,我收到以下错误:

error C2146: syntax error : missing ';' before identifier 'ContextRecord' winnt.h
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int winnt.h
error C2146: syntax error : missing ';' before identifier 'LPCONTEXT'   winbase.h
error C2040: 'PCONTEXT' : '_CONTEXT *' differs in levels of indirection from 'int'  excpt.h

该项目不包括winnt.h,但它包括windows.h,windbase.h。 我在谷歌上搜索我必须更改项目属性->配置属性->C/C++->预处理器->定义以添加像_MBCS,或添加$(ARCHFAM),$(ARCHFAM)。 或者通过将 windows.h 放在其他头文件的顶部来更改头文件的顺序,我也这样做了,但所有这些都没有修复错误。

有什么建议我可以解决这些问题吗?谢谢。

在所有 3 个中,#include<windows.h> 个,Windows.h 将它们全部拖入。这是您唯一需要的包含。它涵盖了所有Windows API的80%,减去操作系统的一些专门的离散方面(例如直接2D,加密等)

我也遇到了这些错误。我的问题是我忘记了其中一个头文件中类定义后面的";"。

而不是:

class myClass
{
   ...
};

我有:

class myClass
{
    ...
}

也许它对某人有所帮助...

有必要手动更正文件 winnt.h 中的语法错误

行: 类型定义空隙 *POINTER_64 PVOID64;

我们更正:类型定义空隙 *POINTER_64、*PVOID64;

或两个:类型定义空隙 *POINTER_64; typedef void *PVOID64;

错误消失

我的dll头文件中有windows.h。
将其移出头文件并仅移入需要 windows.h 的.cpp项目中,并且它工作了。

DLL的控制台测试应用程序在尝试包含一堆Windows内容时生气了。