gpt4 book ai didi

c++ - 有没有办法用 MIDL 关闭 C 风格的头文件生成?

转载 作者:搜寻专家 更新时间:2023-10-31 01:56:58 24 4
gpt4 key购买 nike

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

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 接口(interface)的 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 只生成 header 的 C++ 部分?是否可以关闭 iface_i.c 和 iface_p.c 文件的生成并强制 MIDL 生成 C++ 定义?

UPD1:

我尝试按照指定添加 [local] 属性 here :

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

但没有任何成功。

最佳答案

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

关于c++ - 有没有办法用 MIDL 关闭 C 风格的头文件生成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6255268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com