I'm getting a error MIDL2272 in line 24 when compiling the following IDL file with VS2015:
error MIDL2272: (async) interface must derive from another (async) interface : [ Interface 'IVDAAA' ]
If I comment out the interface AAA block or swap the interface CCC block before interface AAA it works. (Forward declarations of interfaces do not help here)Code:import "oaidl.idl"; import "ocidl.idl"; [ uuid(AAAAAAAA-BBBB-AAAA-AAAA-AAAAAAAAAAAA), helpstring("IDLTEST 1.0 Type Library"), version(1.0) ] library IDLTEST { // Forward declarations of interfaces do not help here //interface IVDAAA; //interface IVDBBB; //interface IVDCCC; [ uuid(AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA), helpstring("helpstring"), object, dual ] interface AAA : BBB { } [ uuid(BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB), helpstring("helpstring"), object, dual ] interface BBB : CCC { } [ uuid(CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC), helpstring("helpstring"), object, dual ] interface CCC : IUnknown { } }
Has someone a explanation for this behavior or a solution? (I can't change the order of interfaces because the code is generated.)
I found a post that this is a limitation/bug(?) in MIDL: http://marc.info/?l=ms-dcom&m=103440617319140&w=2
Can someone confirm that MIDL is limited in the level of derived interfaces?




Reply With Quote
