有没有办法让MIDL关闭C风格的标题生成?

时间:2011-06-06 16:43:52

标签: c++ com idl midl

我有一个简单的.IDL文件(iface.idl),它描述了一个基于IUnknown的界面:

import "unknwn.idl"; 
[
    uuid(80DFDD28-F033-431e-B027-CDD2078FC78A)
]
interface ISunPathCalc : IUnknown {
    HRESULT Square([in, out] long * pVal);
    HRESULT Cube([in, out] long * pVal);
};

尝试使用midl /header iface.h iface.idl编译时,我得到3个文件:iface.h,iface_i.c和iface_p.c。 iface.h文件包含ISunpathCalc接口的C ++声明:

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("80DFDD28-F033-431e-B027-CDD2078FC78A")
    ISunPathCalc : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Square( 
            /* [out][in] */ long *pVal) = 0;

        virtual HRESULT STDMETHODCALLTYPE Cube( 
            /* [out][in] */ long *pVal) = 0;

    };

#else   /* C style interface */

此文件的剩余较大部分包含不必要的C内容。

问:有没有办法告诉MIDL只生成标头的C ++部分? 是否可以关闭iface_i.c和iface_p.c文件的生成并强制MIDL生成C ++定义?

UPD1:

我尝试添加指定here

[
    local,
    uuid(80DFDD28-F033-431e-B027-CDD2078FC78A)
]

但没有任何成功。

1 个答案:

答案 0 :(得分:3)

不幸的是,没有办法抑制C头的生成。