为什么com接口一旦发布,就不能改变?

gordon_two 2002-01-23 03:47:00
我现在在用delphi5学习com,但是当我发布了一个com服务器后,就不能再对该接口进行改变了。但是我想对一些部分进行改变,如增加方法等,或从新编译发布。但是客户程序总是报错,说是无法实现接口。
com通过GUID来实现发布,通过GUID来寻找VMT(vtable),二者为什么不能分离?比喻说我发布了一个com,在注册表里添加了一个GUID来提供实现路径,但是当我unregister一个com后,注册表同时删除了该GUID,改变了CLSID的同一个com在注册表中同时改为现在的CLSID,为什么客户程序无法实现该接口?
请不吝赐教!
...全文
121 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
errorcode 2002-01-24
  • 打赏
  • 举报
回复
在客户端需要重新注册组件
武稀松 2002-01-24
  • 打赏
  • 举报
回复
把.dll文件删除,如果不让的话请重新启动。再编译
wyb716 2002-01-24
  • 打赏
  • 举报
回复
com接口能够改变的,但不推荐改变。因为一旦接口发布了,就意味着你的接口已经被应用了。如果你更改了接口,会造成所有使用该接口的程序不能使用。因此,你在定义接口之前,一定要有好的设计规划,一旦定了接口,就不要再改变你的接口了。如果想增加新的接口函数,你就必须发布一个新接口,可以在原有的接口上进行继承,也可以定义一个全新的接口。
halfdream 2002-01-23
  • 打赏
  • 举报
回复
同意VSaber(☆浪人☆).
你误解COM接口不能改变的意思了.
ltmb118 2002-01-23
  • 打赏
  • 举报
回复
先反注册,再刷新类型库,再注册
wgjsoft 2002-01-23
  • 打赏
  • 举报
回复
关注
VSaber 2002-01-23
  • 打赏
  • 举报
回复
com发布的接口是不能改变是因为为了老的客户程序可以继续使用,例如以前directx5写的游戏,如果安装了directx6,directx接口变了,那么以前的游戏岂不是不能运行了!

你遇到的问题,应该是你程序的什么问题而已,不是“com发布的接口是不能改变”这个原因。
iBear 2002-01-23
  • 打赏
  • 举报
回复
com发布的接口是不能改变的,因为com的设计是为了组件重用,接口进城变,别人怎么使用!!
要增加新的方法,就只能通过在com中增加新的接口来实现
gordon_two 2002-01-23
  • 打赏
  • 举报
回复
我刚学com,很多书中都说一旦发布接口,就是不可改变的,只能通过继承一个新的接口来实现新的功能。但我觉得不好,现在卡在这里了,因为DCOM我现在尚未看,不知道是否是为了实现DCOM,微软才采用这种强制性的方法。
票票飞扬 2002-01-23
  • 打赏
  • 举报
回复
不可能,是你程序的问题吧!

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧