何时更改类型库上的GUID

时间:2008-11-13 16:47:10

标签: com guid typelib

我知道当你在COM接口中添加/更改/删除方法时,你应该更改接口/ coclass GUID但是类型库呢。什么时候应该更改类型库的GUID?如果类型库中的GUID发生了变化,您是否更改了它?或者,您应该只在类型库中没有自己的GUID的内容发生更改时进行更改。

2 个答案:

答案 0 :(得分:3)

基本原则是COM接口和类型库应该是不可变的(也就是说,它们不应该改变)。如果更改COM接口中的一个项目,则新版本需要与先前版本完全独立。执行此操作的唯一方法是更改​​库中每个接口的GUID以及类型库本身的GUID。更改类型库的名称也是一个好主意(为了您个人的理智)。

理想情况下,您不应该更改COM接口。而是创建一个新的派生COM接口并在新类型库中发布。

答案 1 :(得分:0)

我有一个类似的问题。

我有一个CLSID_A的原始控件,它在一些带有GUID_A的1.0类型库中实现了接口IID_A

稍后,我决定在原始控件中添加一个新界面。然后它将实现IID_A和IID_B接口。我想我应该保持相同的CLSID,但不知道如何处理typelib本身。我主要做的是VC ++程序化程序,其中涉及QueryInterface并且不关心版本控制和类型库。您想要创建一个具有特定CLSID的对象,您只需要CoCreated实例...然后查询接口以获得对新接口的潜在支持...

现在,当我进入像LabVIEW这样的更高级的环境或像Microsoft .NET这样的设计时插入式开发环境时,MFC的东西似乎已经破裂。

您在答案中提及更改所有GUID。基于可用功能的应用程序调整应用程序的整个范例是不是一个新的应用程序仍然可以使用旧版控件的基本功能?也许我没有抓住后来的浪潮:使用旧的控件版本调整应用程序运行没有意义,它只需要一个特定的控件版本。这就是为什么M $也会出现在ASSEMBLY的事情上。