Quantcast
Channel: CodeGuru Forums - Visual C++ Programming
Viewing all articles
Browse latest Browse all 3029

Why error MIDL2272: (async) interface must derive from another (async) interface ?

$
0
0
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' ]
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
    {
    }
}

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)

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?

Viewing all articles
Browse latest Browse all 3029

Latest Images

Trending Articles



Latest Images