我有成功编译的桌面项目,但在我向项目添加新配置以支持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。我在google上搜索我必须更改项目属性 - >配置属性 - > C / C ++ - >预处理器 - >定义添加如_MBCS,或添加$( ARCHFAM ),$ (ARCHFAM)。或者通过将windows.h放在其他头文件的顶部来改变我已经完成的头文件的顺序,但都没有修复错误。
有什么建议可以解决这些问题吗?感谢。
答案 0 :(得分:2)
#include<windows.h>
,windows.h将它们全部拖入。这是您需要的唯一包含。它涵盖了所有windows api的80%,减去了os的一些专门的离散方面(例如直接2d,加密等)
答案 1 :(得分:1)
我也遇到了这些错误。我的问题是我忘了“;”在我的一个标题文件中我的课程定义。
而不是:
class myClass
{
...
};
我有:
class myClass
{
...
}
也许它有助于某人...
答案 2 :(得分:0)
有必要手动纠正文件winnt.h中的语法错误
行:typedef void * POINTER_64 PVOID64;
我们更正:typedef void * POINTER_64,* PVOID64;
或者两个:typedef void * POINTER_64; typedef void * PVOID64;
错误消失
答案 3 :(得分:0)
我的dll头文件中有windows.h 将它从头文件中移出,只移到需要windows.h的.cpp项目中,并且工作正常。
当它试图包含一堆Windows内容时,DLL的控制台测试应用程序生气了。