1

我有一个编译成功的桌面项目,但是在我为项目添加新配置以支持 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 放在其他头文件的顶部来更改我也这样做过的头文件的顺序,但都不能修复错误。

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

4

4 回答 4

2

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

于 2012-05-10T23:22:03.543 回答
1

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

代替:

class myClass
{
   ...
};

我有:

class myClass
{
    ...
}

也许它可以帮助某人...

于 2014-01-11T11:16:27.727 回答
0

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

行: typedef void *POINTER_64 PVOID64;

我们更正: typedef void *POINTER_64, *PVOID64;

或两个: typedef void *POINTER_64; 类型定义无效*PVOID64;

错误消失

于 2016-10-10T22:56:30.810 回答
0

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

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

于 2017-10-01T01:20:50.487 回答