我的问题是:定义COM接口,类和枚举的IDL文件中version
标记的正确用法是什么?
MSN documentation of it令人困惑:"备注"下的第一段似乎清楚地说如果界面发生任何变化,必须更改IID。
但页面的其余部分继续描述使用具有相同IID的不同version
s。甚至有一个sample COM interface页面使用version
和interface
进行展示。
发生了什么?
其他问题:是否允许version
使用enum
? MIDL 7.00.05555接受version
的{{1}}属性,但是如果将版本化的枚举用作函数参数,则MIDL会给出错误。
答案 0 :(得分:2)
[version]
属性适用于DCE-RPC接口,而不适用于COM接口(MIDL编译器支持两者)。见到你引用的第一篇文章中的两个引用:
[version]
interface属性标识 RPC接口的多个版本中的特定版本。 (强调我的)MIDL编译器不支持多个版本的COM接口。因此,包含
[object]
属性的界面属性列表不能包含[version]
属性。
在COM编程中,您可以应用[version]
属性的唯一有用位置是library
子句。类型库支持版本控制。