代码之家  ›  专栏  ›  技术社区  ›  Mawg says reinstate Monica

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

  •  2
  • Mawg says reinstate Monica  · 技术社区  · 14 年前

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

    它的功能非常简单,所以我重新创建了它,但我只能访问VB Express 2008。

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

    但是,我对吉他一无所知…

    我是否应该使用与原始dll相同的guid?有什么区别吗?


    编辑:是吗? 真正地 因为它是一个COM DLL?它是由一个活动的X控件调用的,我在网页中看不到对GUI的引用…(但我只是个无名小卒,我知道什么?;-)

    2 回复  |  直到 14 年前
        1
  •  2
  •   sharptooth    14 年前

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

    注意二进制兼容性是重用guid的必要条件。如果您破坏了任何接口-更改它的ID和实现它的类的ID,然后重新编译客户机。

        2
  •  1
  •   AndersK    14 年前

    guid充当COM对象和DLL的一种标识符。如果使用相同的guid,则需要注册新的dll以便更新位置(即,如果不将其完全放置在同一位置,并且重新创建了以前注册的旧dll的所有接口)。

    更清洁的方法是生成一个新的guid并修改调用者以使用新的guid/dll。