编译来自winnt.h,winbase.h和excpt.h的windows mobile项目的错误

时间:2012-05-10 22:53:19

标签: c++ windows mobile

我有成功编译的桌面项目,但在我向项目添加新配置以支持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放在其他头文件的顶部来改变我已经完成的头文件的顺序,但都没有修复错误。

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

4 个答案:

答案 0 :(得分:2)

在所有这三个中,{p> #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的控制台测试应用程序生气了。