Это мой метод, определенный в IDL:
[id(3), helpstring("method GetBatteryStatus")]
HRESULT GetBatteryStatus([out,retval] SYSTEM_POWER_STATUS_EX2* batteryStatus);
SYSTEM_POWER_STATUS_EX2
- это структура, определенная в winbase.h
, и этот проект является проектом ATLSmartPhone, winbase.h
взят из SDK от Microsoft.
Когда я компилирую проект, ошибка:
error MIDL2025 : syntax error : expecting a type specification near "SYSTEM_POWER_STATUS_EX2"
Если я добавлю import "winbase.h"
в начало файла IDL, ошибка будет:
error MIDL2003 : redefinition : size_t; error MIDL2003 : redefinition : _LARGE_INTEGER;.....
Тогда, если я добавлю typedef в IDL:
typedef[public,uuid(37DE998A-6787-415a-A191-861C315D1248),helpstring("Power Status")]
struct _SYSTEM_POWER_STATUS_EX2 {
...
...
} SYSTEM_POWER_STATUS_EX2;
Ошибка будет:
error C2011: '_SYSTEM_POWER_STATUS_EX2' : 'struct' type redefinition.
Так как мне экспортировать структуру SYSTEM_POWER_STATUS_EX2
, которая была определена в winbase.h
с IDL?