0

我的问题是:version在定义 COM 接口、类和枚举的 IDL 文件中,标签的正确用法是什么?

它的MSN 文档令人困惑:“备注”下的第一段似乎明确表示,如果界面中有任何更改,则必须更改 IID。

但是页面的其余部分继续描述使用version具有相同 IID 的不同 s。甚至还有一个示例 COM 接口页面显示使用versionwith interface

这是怎么回事?

附加问题:是否允许versionenum? MIDL 7.00.05555 接受 的version属性enum,但是如果将版本化枚举用作函数参数,则 MIDL 会给出错误。

4

1 回答 1

2

[version]属性适用于DCE-RPC接口,而不适用于 COM 接口(MIDL 编译器支持两者)。见证您引用的第一篇文章中的两个引述:

interface 属性标识RPC 接口[version]的多个版本中的特定版本。(强调我的)

MIDL 编译器不支持 COM 接口的多个版本。因此,包含该属性的接口属性列表[object]不能包含该[version]属性。

在 COM 编程中,您可以应用[version]属性的唯一有用的地方是library子句。类型库支持版本控制。

于 2014-07-28T23:12:20.813 回答