我有一个简单的.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)
]
答案 0 :(得分:3)
不幸的是,没有办法抑制C头的生成。