重新创建COM DLL,我是否需要担心GUID?

时间:2010-09-02 05:28:03

标签: visual-studio com dll guid

需要在DLL中进行更改。 DLL最初是用VB6编写的(不是我编写的),源代码丢失了。

它的功能非常简单,所以我从头开始重新创建它,但我只能访问VB Express 2008.

我首先将其创建为普通DLL,然后意识到它必须是一个COM DLL。幸运的是,http://www.codeproject.com/KB/COM/nettocom.aspx上的一篇优秀文章告诉我如何。

但是,我对GUID没有任何了解......

我是否应该使用与原始DLL相同的GUID?这有什么不同吗?


编辑:真的是否重要,因为它是一个COM DLL?它由Active X控件&我在网页上看不到GUI的引用...(但我只是一个n00b,所以我知道什么?; - )

2 个答案:

答案 0 :(得分:2)

如果您希望此库直接替换原始文件并且它完全是二进制兼容的(所有接口都保持不变) - 那么是的,您应该对类ID和接口ID使用相同的GUID。如果不这样做,原始库的用户将无法在不重新编译程序的情况下使用您的程序。

请注意,二进制兼容性是重用GUID的必要条件。如果你破坏任何接口 - 改变它的id和实现它的类的id并重新编译客户端。

答案 1 :(得分:1)

GUID充当COM对象和DLL的一种标识符。如果您使用相同的GUID,则需要注册新的DLL以便更新位置(即,如果您没有将其准确放置在同一位置并重新创建旧DLL先前已注册的所有接口)。

更干净的方法是生成新的GUID并修改调用者以改为使用新的GUID / DLL。