"版本" Microsoft IDL中的属性

时间:2014-07-28 21:33:48

标签: com idl midl

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

MSN documentation of it令人困惑:"备注"下的第一段似乎清楚地说如果界面发生任何变化,必须更改IID。

但页面的其余部分继续描述使用具有相同IID的不同version s。甚至有一个sample COM interface页面使用versioninterface进行展示。

发生了什么?

其他问题:是否允许version使用enum? MIDL 7.00.05555接受version的{​​{1}}属性,但是如果将版本化的枚举用作函数参数,则MIDL会给出错误。

1 个答案:

答案 0 :(得分:2)

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

  

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

     

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

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