2012-01-08 5 views
0

와 WINBASE.H에 정의 된 구조체 SDK 수출이는 IDL에 정의 된 내 방법입니다 ATL의 IDL

내가 프로젝트를 오류를 컴파일

은 다음과 같습니다 나는 IDL 파일의 상단에 import "winbase.h"를 추가하는 경우

error MIDL2025 : syntax error : expecting a type specification near "SYSTEM_POWER_STATUS_EX2" 

이 오류는 다음과 같습니다 그런

error MIDL2003 : redefinition : size_t; error MIDL2003 : redefinition : _LARGE_INTEGER;..... 

나는 형식 정의를 추가하는 경우 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 구조체를 IDL로 내보낼 수 있습니까?

답변

0

당신은 별도의 IDL 파일에 SYSTEM_POWER_STATUS_EX2IDL 버전을 쓰기 만 MIDL 위해를 가져올 수 있습니다

cpp_quote("#if 0") 
import "fake.idl"; 
cpp_quote("#else") 
cpp_quote("#include <orginial_header>") 
cpp_quote("#endif")