Visual C ++ 2008无法识别Windows声明的类型

时间:2010-05-11 14:50:37

标签: visual-c++ visual-c++-2008

我的程序在最新的U3D软件中似乎无法识别声明的类型。有一条线

typedef BOOL (WINAPI* GMI)(HMON, LPMONITORINFOEX);

得到错误:

错误1错误C2061:语法错误:标识符'LPMONITORINFOEX'c:\ Projects \ U3D \ Source \ RTL \ Platform \ Common \ Win32 \ IFXOSRender.cpp 28

和一行

MONITORINFOEX miMon;

得到

错误5错误C2065:'miMon':未声明的标识符c:\ Projects \ U3D \ Source \ RTL \ Platform \ Common \ Win32 \ IFXOSRender.cpp 49 错误3错误C2065:'MONITORINFOEX':未声明的标识符c:\ Projects \ U3D \ Source \ RTL \ Platform \ Common \ Win32 \ IFXOSRender.cpp 49

该程序的第一个非评论语句是#include <windows.h>,其中包含winuser.h,它定义了这些标识符。在Visual Studio中,我可以右键单击它们并转到定义(typedef),从typedef转到struct。 WINAPI中定义WinDef.h,因此似乎有效。在任何其他文件中都没有LPMONITORINFOEXMONITORINFOEX的重新定义。

那么,这怎么可能发生,我该怎么办呢?

1 个答案:

答案 0 :(得分:1)

我的猜测是你的WINVER定义了。如果你看一下winuser.h,那些只在块中定义:

#if(WINVER >= 0x0500)

您的WINVER可能设置错误吗?