아무 것도 파생하지 않는 IDL에서 인터페이스를 정의하면 MIDL 사전 컴파일러에서 다음과 같이 경고합니다 (Visual C++ 2008).
경고 MIDL2271 : [개체] 인터페이스는 다른 [
오류 MIDL2257 : 같은IDL을 사용하여 순수 기본 클래스 정의
내가 IUnknown로부터 파생되지 않는 서로 내 인터페이스를 도출 경우에, 관한 실패의 IUnknown (...)와 같은 객체] 인터페이스 만의 IUnknown 루트 인터페이스 (사용할 수있다 .. .)
자, 내 질문 :이 제한 COM 또는 MIDL precompiler 있습니까?
나는 최근에 D3D10 헤더를보고 있었고 d3d10.h는 분명히 IDL (MIDL이이 효과에 대한 설명을 추가)을 사용하여 생성되었습니다. 모든 인터페이스는 IUnknown에서 파생됩니다.
그러나 주변 장치 헤더 (d3d10shader.h, d3d10effect.h 등)에는 수동으로 정의 된 COM 인터페이스가 포함되어 있으며 일부는 여기에 설명 된 경고 또는 오류를 유발합니다. 필자는 이러한 제한을 피하기 위해 수동으로 정의해야한다고 가정 할 수 있습니다.
맞습니까? 왜 MIDL은 순수 인터페이스를 방지합니까?