MIDL在编译IDL文件时更改标识符的大小写

Rog*_*mbe 5 midl

我有一段IDL看起来像这样:

[ object, uuid(...), pointer_default(unique) ]
interface IVirtualMachine { /* ... */ }

[ object, uuid(...), pointer_default(unique) ]
interface IVirtualServer : IUnknown
{
    HRESULT FindVirtualMachine(
        [in] BSTR configurationName,
        [out,retval] IVirtualMachine **virtualMachine);
};

[ uuid(...), version(1.0) ]
library VirtualServerLib
{
    [ uuid(...) ]
    coclass VirtualServer
    {
        [default] interface IVirtualServer;
    };

    [ uuid(...) ]
    coclass VirtualMachine
    {
        [default] interface IVirtualMachine;
    };
};
Run Code Online (Sandbox Code Playgroud)

...当我使用MIDL编译它然后查看生成的类型库时,VirtualMachine(大写V)已经变成virtualMachine(小写V).

XirtualMachine例如,如果我打电话给我的coclass ,一切都很好.

我勒个去?

小智 6

这是MIDL的一个可怕的错误/功能.它不允许相同的标识符出现在不同的大小写中,因此它从第一次看到时用套管替换了单词的所有后续实例.

KB220137