2012-05-10 50 views
1

我有编译成功的桌面项目,但是在向项目添加新配置以支持Windows Mobile平台之后,我收到以下错误:从winnt.h,winbase.h和excpt.h编译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放在其他头文件的顶部来更改我已经完成的头文件的顺序,但都不会修复错误。

任何建议,我可以解决这些问题?谢谢。

回答

2

#include<windows.h>在所有这3个窗口中,windows.h都将它们全部拖入。这是您唯一需要的。它覆盖了所有windows api的80%,减去os的某些专门的离散方面(如直接2d,加密等)

+0

我对三个.cpp文件中的windows.h头文件进行了评论,这些都是我可以通过CTR-F找到的,但仍然存在相同数量的错误。 – Lufia

+0

我的意思是我将这三个windows.h文件注释掉。 – Lufia

+0

发布您的代码。 – johnathon

1

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

相反的:

class myClass 
{ 
    ... 
}; 

我:

class myClass 
{ 
    ... 
} 

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

0

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

Line:typedef void * POINTER_64 PVOID64;

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

或者两个:typedef void * POINTER_64; typedef void * PVOID64;

错误消失

0

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

DLL的控制台测试应用程序在试图包含一堆windows的东西时变得很生气。