描述:
各位前辈, 小弟刚接触ATL不久. 最近一直碰到一个问题, 就是即使刚新建好一个ATL项目. 立刻进行编译. 总会报winbase.h出错. 不知道怎么解决, 请各位前辈帮忙...
具体编译出错情况如下:
错误 1 error C2143: 语法错误 : 缺少“;”(在“<class-head>”的前面) c:\program files\microsoft visual studio 8\vc\platformsdk\include\winbase.h 10509
错误 2 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int c:\program files\microsoft visual studio 8\vc\platformsdk\include\winbase.h 10509
而出错的那一行只是结构体. 找不出有什么不正确的地方.
typedef struct _SYSTEM_POWER_STATUS {
BYTE ACLineStatus;
BYTE BatteryFlag;
BYTE BatteryLifePercent;
BYTE Reserved1;
DWORD BatteryLifeTime;
DWORD BatteryFullLifeTime;
} SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
解决方案1:
缺少“;” 一般是那个对象没定义(结构体)
你找到SYSTEM_POWER_STATUS定义的地方, 再看前面是否有类似下面的语句,
#if (_WIN32_WINNT >= 0x0XXXX)
这里如果_WIN32_WINNT 这个宏的值不够大, 结构体就不会定义
您可能想查找下面的文章:
- 在一个atl的复合控件项目中,如果调用其它ocx控件的方法??
- 在ATL工程中怎么写文件?用fprintf老是报错!!!
- 请教:ATL工程中定时器的使用
- 为什么atl项目中不能使用CComCurrency类?
- 新建一个ATL项目,直接运行就出错了??
- ATL项目中怎样建立继承于IUnknown的没有任何实现的基接口?
- ATL项目中普通类通过CoCreateInstance获取IXMLDOMDocument接口时返回E_NOINTERFACE
- vc71的ATL项目中添加一静态库,报NO_ERROR重定义(一个是Errorh和WinErrorh下的冲突),怎么处理?
- 把某个ATL工程的功能移植到MFC的工程里怎么就那么难?
- ATL工程中两个类之间参数怎么调用